当特定产品类别在Woocommerce购物车

时间:2018-06-05 15:44:50

标签: php css wordpress woocommerce cart

在我开始提问之前,我想告诉您我是平面设计师,而不是开发人员。我正在用他们的网站帮助一个好友,所以请原谅我的无知和缺乏知识。

我正在使用WooCommerce商店在Wordpress中构建一个网站。我对CSS和HTML相当熟悉,但几乎没有PHP知识,而且我对WooCommerce很新。

我有一件非常具体的事情,但我真的不知道从哪里开始。

基本上,我想在特定类别的产品放入购物车后应用条件css样式(如果产品被移除则反转)。具体来说,我想更改位于窗口小部件中的图标的颜色,并将显示在标题上。因此效果是,当访问者向他们的购物车添加“礼物”时,“礼物”图标将“点亮”以提示访问者下一次添加“卡片”等等。

我发现以下乍一看看起来可能会让我接近,但我不知道如何实现它,所以任何帮助都会非常感激:

// set our flag to be false until we find a product in that category
$cat_check = false;

// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

$product = $cart_item['data'];

// replace 'membership' with your category's slug
if ( has_term( 'membership', 'product_cat', $product->id ) ) {
    $cat_check = true;
    // break because we only need one "true" to matter here
    break;
}
}

// if a product in the cart is in our category, do something
if ( $cat_check ) {
// we have the category, do what we want
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

在钩子函数中尝试使用以下稍微不同的重新访问的代码,这将允许您在购物车项目中找到特定的产品类别时添加一些内联CSS样式:

add_action( 'wp_head' , 'custom_conditional_css_styles' );
function custom_conditional_css_styles(){
    if( WC()->cart->is_empty() ) return; // We exit is cart is empty

    // HERE your product category
    $product_category = 'membership';
    $found            = false;

    // Loop through cart items checking for our product category
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( has_term( 'membership', 'product_cat', $cart_item['product_id'] ) ) {
            $found = true;
            break; // Found we stop the loop
        }
    }

    if ( ! $found ) return; // If the product category is noy found we exit 

    // Here come your CSS styles
    ?>
    <style>
        .my-class { color:red;}
    </style>
    <?php
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。

  

对购物车项目使用has_term()时,请勿使用$cart_item['data']->get_id(),而应始终使用$cart_item['product_id']

答案 1 :(得分:0)

假设我们在产品中有两个类别,其中一个类别具有product_cat-slippers类,第二个类别具有product_cat-floaters。

你可以在下面的代码中使用css:not selector view。

:not(.product_cat-floaters) {
    color: red;
}

https://www.w3schools.com/cssref/sel_not.asp