我正在向“购物车”页面添加自定义消息,但只有在添加的产品选择了自定义变体属性时才会显示。
经过研究,我来到了:
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'时,它会停止工作。
这有意义吗? 再次感谢您的关注和建议。
答案 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文件中。经过测试和工作。