Php if语句中的Multiple具有_项
在Woocommerce购物车中,如果客户有一种类型的产品类别而不是另一种类型的产品类别,我想显示一条消息,如“您真的应该买这个才能买这个”警报 但是我无法让代码在if语句中处理多个产品类别。一个可以正常工作,但是如果我添加另一个带有&&的语句,则什么也不会发生Php if语句中的Multiple具有_项,php,wordpress,woocommerce,categories,custom-taxonomy,Php,Wordpress,Woocommerce,Categories,Custom Taxonomy,在Woocommerce购物车中,如果客户有一种类型的产品类别而不是另一种类型的产品类别,我想显示一条消息,如“您真的应该买这个才能买这个”警报 但是我无法让代码在if语句中处理多个产品类别。一个可以正常工作,但是如果我添加另一个带有&&的语句,则什么也不会发生 foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $product = $cart_item['data'];
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) ) {
noInstallModal();
break;
}
}
我做错了什么
编辑:
忘了解释。如果购物车的产品类别为“flakt”,而不是“installation”,则信息应显示。如果在If语句中有多个,则应使用“或”而不是“AND”
您可以通过条件函数直接使用术语数组:
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) || has_term( 'installation', 'product_cat', $product->get_id() ) ) {}
这也应该有效
与您的评论相关的更新: 由于产品可以有许多产品类别,如果您想确保只显示“flakt”产品类别的消息,而不显示“installation”产品类别的消息,您将使用:
if ( has_term( array('flakt', 'installation'), 'product_cat', $product->get_id() ) ) {}
对于产品ID:
您应该使用$cart\u item['product\u id']
(而不是$cart\u item['data']->get\u id()
),因为产品变量不适用于您的产品类别
我不得不这样解决它
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( has_term( 'flakt', 'product_cat', $cart_item['product_id'] ) ) {
if ( ! has_term( 'installation', 'product_cat', $cart_item['product_id'] ) ) {
noInstallModal();
break;
}
}
}
我没能解释一件事。很抱歉如果购物车中的一个产品的类别为“flakt”,但不是“installation”,则应显示消息。这可能吗?您的解决方案应该有效,但由于某些原因无效。可能是Wordpress/WooCommerce本身有问题。我用另一种方法解决了,但谢谢你!不是为我工作的。。。如果(!has_term('term','taxonomy',$post->ID)){}使用NOT运算符不起作用,也尝试了这段代码。这真是太奇怪了。IF的任何一部分都可以自己工作,但当两者都与or结合时,两者都不起作用。我不得不使用“if,elseif,else”来使逻辑工作。
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( has_term( 'flakt', 'product_cat', $cart_item['product_id'] ) ) {
if ( ! has_term( 'installation', 'product_cat', $cart_item['product_id'] ) ) {
noInstallModal();
break;
}
}
}
$flakt = false;
$install = false;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
if ( has_term('flakt', 'product_cat', $product->get_id()) ){
$flakt = true;
}
if ( has_term('installation', 'product_cat', $product->get_id()) ){
$install = true;
}
}
if($flakt && !$install){
noInstallModal();
}