if 语句中的多个 has_term
Multiple has_term in if statement
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;
}
}
在 Woocommerce 购物车中,如果客户有一种产品类别但没有另一种,我想显示一条消息,如 "you should really buy this to buy this" 警报。
但我无法在 if 语句中获得用于多个产品类别的代码。一个工作正常,但如果我添加另一个带有 && 的语句,什么也不会发生。
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) && has_term( 'installation', 'product_cat', $product->get_id() ) ) {}
我做错了什么?
编辑:
忘记解释了。如果购物车中有类别为 "flakt" 的产品,但没有类别为 "installation" 的产品,则应显示该消息。
在 if 语句中有多个 has_term()
,你应该使用 "OR" 而不是 "AND",:
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) || has_term( 'installation', 'product_cat', $product->get_id() ) ) {}
You can use directly an array of terms with has_term()
conditional function:
if ( has_term( array('flakt', 'installation'), 'product_cat', $product->get_id() ) ) {}
这应该也有效。
与您的评论相关的更新:
由于一个产品可以有多个产品类别,如果您希望确保只显示 'flakt' 产品类别而不是 'installation' 产品类别的消息,您将使用:
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;
}
}
}
For the product ID:
You should use $cart_item['product_id']
(instead of $cart_item['data']->get_id()
) as product variarions will not work for your product categories…
我不得不这样解决..
$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();
}
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;
}
}
在 Woocommerce 购物车中,如果客户有一种产品类别但没有另一种,我想显示一条消息,如 "you should really buy this to buy this" 警报。
但我无法在 if 语句中获得用于多个产品类别的代码。一个工作正常,但如果我添加另一个带有 && 的语句,什么也不会发生。
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) && has_term( 'installation', 'product_cat', $product->get_id() ) ) {}
我做错了什么?
编辑: 忘记解释了。如果购物车中有类别为 "flakt" 的产品,但没有类别为 "installation" 的产品,则应显示该消息。
在 if 语句中有多个 has_term()
,你应该使用 "OR" 而不是 "AND",:
if ( has_term( 'flakt', 'product_cat', $product->get_id() ) || has_term( 'installation', 'product_cat', $product->get_id() ) ) {}
You can use directly an array of terms with
has_term()
conditional function:if ( has_term( array('flakt', 'installation'), 'product_cat', $product->get_id() ) ) {}
这应该也有效。
与您的评论相关的更新:
由于一个产品可以有多个产品类别,如果您希望确保只显示 'flakt' 产品类别而不是 'installation' 产品类别的消息,您将使用:
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;
}
}
}
For the product ID:
You should use
$cart_item['product_id']
(instead of$cart_item['data']->get_id()
) as product variarions will not work for your product categories…
我不得不这样解决..
$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();
}