Php if语句中的Multiple具有_项

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'];

在Woocommerce购物车中,如果客户有一种类型的产品类别而不是另一种类型的产品类别,我想显示一条消息,如“您真的应该买这个才能买这个”警报

但是我无法让代码在if语句中处理多个产品类别。一个可以正常工作,但是如果我添加另一个带有&&的语句,则什么也不会发生

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();
}