当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce中有条件隐藏购物车页面优惠券字段

古明煦
2023-03-14

我想隐藏购物车页面上所有产品的优惠券字段,除了具有特定产品类别的产品。我创建了以下代码,但每隔一段时间,这似乎与时间无关,我得到一个错误消息显示。它不会阻止代码工作,也不会导致任何问题。然而,我似乎无法跟踪为什么我得到错误消息或如何解决它。

add_filter( 'woocommerce_coupons_enabled', 'wdc_hide_coupon_field_dinner_dances' );

function wdc_hide_coupon_field_dinner_dances($enabled){ 
$wdc_category = 'discount';
$has_cat = true;

foreach ( WC()->cart->get_cart() as $cart_item_key =>$cart_item ) {
   $wdc_product = $cart_item['data'];
   $product_id = method_exists( $wdc_product, 'get_id' ) ? $wdc_product->get_id() : $wdc_product->id;
   if ( has_term( $wdc_category, 'product_cat', $product_id ) ) $has_cat = false;
   }
   if ( $has_cat && is_cart() ) {
      $enabled = false;
  }
 return $enabled;
}

我收到这个错误信息

==========
文件/home/westviewdess/public\u html/wp content/plugins/wdcfreeticketcoon for Woocommerce/wdcfreeticketcoon for Woocommerce.php的第16行中出现了类型为E_error的错误
错误消息:未捕获错误:在/home/westviewdance/public\u html/wp content/plugins/wdcfreeticketcon for Woocommerce/wdcfreeticketcon
for Woocommerce.php:16堆栈跟踪:
0/home/westviewdance/public\u html/wp includes/class wp hook.php(287):wdc\u隐藏优惠券\u字段\u晚餐\u舞蹈(true)
#1/home/westviewdance/public_html/wp includes/plugin.php(206):wp_Hook-

共有1个答案

花健
2023-03-14

尝试下面的简化代码和一些条件检查,以避免此错误问题。此外,在查看购物车项目中的产品类别时,始终使用$cart\u item['product\u id'],因为这种方式也适用于产品变体。

add_filter( 'woocommerce_coupons_enabled', 'hide_coupon_field_dinner_dances' );
function hide_coupon_field_dinner_dances( $enabled ){ 
    $cart = WC()->cart; // The WC_Cart Object
    
    // Only on cart page
    if( is_cart() && $cart && method_exists( $cart, 'get_cart' ) ) {
        $category = array('discount'); // <= Here define the product categories
        $enabled  = false; // Only enable when this product category is in cart
        
        // Loop through cart items
        foreach ( $cart->get_cart() as $cart_item ) {
            if ( has_term( $category, 'product_cat', $cart_item['product_id'] ) )  {
                $enabled = true;
                break;
            }
        }
    }
    return $enabled;
}

这应该更好地避免这个问题。

 类似资料:
  • 我在WooCommerce上创建了一个产品,并在产品详细信息页面上使用hook

  • 我已经在购物车页面上隐藏了优惠券字段。现在,我尝试隐藏或显示优惠券字段,具体取决于结帐页面上的付款方式。 我尝试了这个代码:在结账页面中检测WooCommerce付款方式 但这行不通。你有什么提示给我吗。谢谢

  • WooCommerce可以用来展示产品,只要开启目录模式(Catalog Mode),即将与购买相关的内容去掉。本文介绍如何去掉价格和购买按钮。 2021年10月更新,请看这篇最新的文章WooCommerce目录模式Catalog Mode(2021). 去掉价格字段 把代码放在主题的functions.php下 //Hide price add_filter( 'woocommerce_get_

  • 我想重定向我的购物车/结账页面到新的页面,如果优惠券是在WooCommerce应用。我有一张免费打印的优惠券。如果用户应用它,我希望页面被重定向到一个新的页面,在那里用户可以选择一些产品。优惠券应用后,我很难重定向页面。任何问题都会得到极大的评价。 谢谢

  • 如何在Woocommerce购物车页面中的购物车项目名称后添加产品ID? 我知道我需要先不返回,因为这样会把我从函数中拉出来,但我很好奇我该如何去做这件事。

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 提示 由于右侧的演示是通过iframe标签引入的,缺少了手机端运行的相关API,或者因为演示区域太小,或者电脑分别率不够高 ,导致演示可能会有问题,手机端有不会这些问题,请在右上角的"演示"中用