在WooCommerce购物车项目上为特定产品类别添加正文类

rabox66

在有人将“ Variation”类别的产品添加到购物车后,我希望有一个不同的布局。

我有一个可以正常工作但破坏布局的代码。它会检查购物车中是否有某种类别的产品,如果有,它会在body_class中添加一个类

/* ADD PRODUCT CLASS TO BODYCLASS  */
add_filter( 'body_class', 'prod_class_to_body_class' );

function prod_class_to_body_class() {

    // set flag
    $cat_check = false;

    // check cart items 
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

        $product = $cart_item['data'];

        if ( has_term( 'my_product_cat', 'product_cat', $product->id ) ) {
            $cat_check = true;
            break;
        }
    }

    // if a product in the cart has the category "my_product_cat", add "my_class" to body_class
    if ( $cat_check ) {
          $classes[] = 'my_class';
    }

    return $classes;
}

如果我查看源代码,并且购物车中有商品“ my_product_cat”,则可以看到新类。但是布局是一场灾难。

有人看到错误了吗?

LoicTheAztec

有多个错误:

  • 主函数变量参数丢失
  • has_term()在购物车中使用,请始终使用$cart_item['product_id']它以使其与产品差异项一起使用。

您的代码也可以简化。请尝试以下操作:

// ADD PRODUCT CLASS TO BODYCLASS
add_filter( 'body_class', 'prod_class_to_body_class' );
function prod_class_to_body_class( $classes ) {
    $check_cat = 'my_product_cat'; // Product category term to check
    $new_class = 'my_class'; // Class to be added

    // Loop through cart items 
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // Check for a product category term
        if ( has_term( $check_cat, 'product_cat', $cart_item['product_id'] ) ) {
            $classes[] = $new_class; // Add the new class
            break; // Stop the loop
        }
    }
    return $classes;
}

代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更改 Woocommerce 中特定产品类别的购物车项目价格

WooCommerce中特定产品类别的最小购物车项目数量

在WooCommerce的末尾对特定产品类别购物车项目进行排序

删除Woocommerce中针对特定产品类别的添加购物车按钮

在WooCommerce中为特定产品类别自定义“添加到购物车”按钮

为特定WooCommerce产品类别的购物车项目设置最小数量

更改Woocommerce 3中特定产品类别的“添加到购物车”文本

删除WooCommerce 3中特定产品类别的“添加到购物车”按钮

WooCommerce中特定产品类别的最小购物车数量

计算特定产品类别的购物车项目

Ajax上的JS警报已添加到购物车,以获取Woocommerce中特定产品类别的数量

当购物车中有特定产品ID时,设置Woocommerce产品类别商品价格

根据WooCommerce产品类别禁用特定的购物车项目数量字段

隐藏 WooCommerce 购物车中特定产品类别的 woocommerce-checkout-review-order 表

如果购物车包含特定的Woocommerce产品类别,请阻止添加到购物车

Woocommerce购物车中的特定产品类别时,有条件地应用CSS样式

隐藏Woocommerce 3中特定产品类别的购物车优惠券字段

如果用户未登录Woocommerce,请避免将其添加到特定产品类别的购物车中

WooCommerce无法从产品类别访问购物车

避免在Woocommerce中更新特定产品类别的购物车价格

自定义特定 WooCommerce 产品类别上的“添加到购物车”按钮

在Woocommerce中检查购物车项目中的产品类别

Woocommerce中基于产品类别和项目计数的购物车总数

来自WooCommerce产品类别购物车项目计数的费用

从WooCommerce中的购物车项目中获取产品类别术语

Woocommerce中基于状态和产品类别的累进购物车项目费用

根据Woocommerce产品类别更改“添加到购物车”按钮的颜色

购物车中有2种特定产品类别时显示自定义消息

WooCommerce 重定向添加到购物车以结帐特定产品类型