仅在特定产品变体属性

时间:2018-03-27 09:55:23

标签: php wordpress woocommerce cart variations

我正在向“购物车”页面添加自定义消息,但只有在添加的产品选择了自定义变体属性时才会显示。

经过研究,我来到了:

add_action( 'woocommerce_after_cart', 'wnd_after_cart' ); 
function wnd_after_cart() { 
    if($attribute_slug == 'no_review'){ 
        echo '<div class="wnd_after_cart"><h4>There will be no item manual review</h4><br /> </div>';
    }
}

但它不起作用。有谁知道我做错了什么?

add_action( 'woocommerce_after_cart', 'wnd_after_cart' ); 
function wnd_after_cart() { 
    echo '<div class="wnd_after_cart"><h4>There will be no item manual review</h4><br /> </div>'; 
}

效果很好,但只有在我的自定义属性被选中后才能显示消息的代码。

感谢任何帮助...

修改

我设置了我的产品Atributes(例如:衬衫尺寸,Slug:'Shirt_Size'),以及它们在此属性中的变化(例如:S(Slug:'Size_S'),M(Slug:'Size_M'),XL( Slug:'Size_XL'))

我正在尝试在选择特定的属性变化时显示消息(例如:S的slug,'Size_S')

我正在使用衣服/衬衫尺码,因为它是一个更常见的例子来帮助说明。

如果我没有很好地解释,基本上代码正在搜索属性slug,你可以在这个视频中看到0:23 https://www.youtube.com/watch?v=QyMuq-WkV0o

但是我试图让它搜索0:35可以看到的属性变化的slu .. (属性属性,属性变体或属性子,我不知道要命名它们)

@LoicTheAztec代码似乎运行得很好,但它正在搜索属性的slug(Shirt_Size),而不是搜索显示的属性变化。 当我设置代码以找到'Shirt_size'时,它会显示消息,但当我将其设置为'Size_S'时,它会停止工作。

这有意义吗? 再次感谢您的关注和建议。

1 个答案:

答案 0 :(得分:1)

有一些缺失的代码,例如从购物车商品中获取$attribute_slug

add_action( 'woocommerce_after_cart', 'checking_variation_attributes_message' );
function checking_variation_attributes_message() {
    $found = false;
    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item ){
        $product = $cart_item['data'];
        if( ! $product->is_type('variation')){
            continue; // Jump to next cart item
        }
        $variation_attributes = $product->get_variation_attributes();
        foreach ( $variation_attributes as $variation_attribute => $term_slug ){
            $attribute_slug = str_replace('attribute_pa_', '', $variation_attribute);

            if( $attribute_slug == 'no_review' ){
                $found = true;
                break;
            }
        }
    }
    if($found){
        echo '<div class="wnd_after_cart"><h4>There will be no item manual review</h4><br /> </div>';
    }
}

更新:或者如果您正在寻找产品属性 term slug ,请使用以下方式:

add_action( 'woocommerce_after_cart', 'checking_variation_attributes_message' );
function checking_variation_attributes_message() {
    $found = false;
    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item ){
        $product = $cart_item['data'];
        if( ! $product->is_type('variation')){
            continue; // Jump to next cart item
        }
        $variation_attributes = $product->get_variation_attributes();
        foreach ( $variation_attributes as $variation_attribute => $term_slug ){
            $attribute_slug = str_replace('attribute_pa_', '', $variation_attribute);

            if( $term_slug == 'no_review' ){
                $found = true;
                break;
            }
        }
    }
    if($found){
        echo '<div class="wnd_after_cart"><h4>There will be no item manual review</h4><br /> </div>';
    }
}

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