Php 如果任何购物车项目在购物车中的数量为1,则显示消息

Php 如果任何购物车项目在购物车中的数量为1,则显示消息,php,woocommerce,Php,Woocommerce,这类似于我之前发布的一个问题,但我需要一个新项目的计算是不同的 如果购物车中的任何一种产品的数量为1,我需要显示一个通知,而不是根据购物车中物品的总数量显示通知。如果购物车中没有任何项目的数量为1,则不需要显示,但如果任何项目的数量为1,则需要显示。这是可能的吗?此函数在购物车项目上循环,如果购物车项目的数量等于1,则会显示通知并结束此函数。 您可以使用“woocommerce\u check\u cart\u items”挂钩,或者根据您需要打印通知的位置使用其他购物车挂钩 这里还有一个修改

这类似于我之前发布的一个问题,但我需要一个新项目的计算是不同的


如果购物车中的任何一种产品的数量为1,我需要显示一个通知,而不是根据购物车中物品的总数量显示通知。如果购物车中没有任何项目的数量为1,则不需要显示,但如果任何项目的数量为1,则需要显示。这是可能的吗?

此函数在购物车项目上循环,如果购物车项目的数量等于1,则会显示通知并结束此函数。

您可以使用“woocommerce\u check\u cart\u items”挂钩,或者根据您需要打印通知的位置使用其他购物车挂钩

这里还有一个修改后的答案,将某些类别的产品排除在触发通知之外(评论中的问题):

每当找到数量为1的产品时,就会有另一个嵌套循环在该产品的类别上进行迭代,如果任何类别与您不希望触发通知的类别匹配,则不会显示通知,外部循环将继续。

不要忘了将“您的类别slug”替换为您不想触发通知的类别slug。

此函数在购物车项目上循环,如果购物车项目的数量等于1,则会显示通知并结束此函数。

您可以使用“woocommerce\u check\u cart\u items”挂钩,或者根据您需要打印通知的位置使用其他购物车挂钩

这里还有一个修改后的答案,将某些类别的产品排除在触发通知之外(评论中的问题):

每当找到数量为1的产品时,就会有另一个嵌套循环在该产品的类别上进行迭代,如果任何类别与您不希望触发通知的类别匹配,则不会显示通知,外部循环将继续。

别忘了用你不想触发通知的类别的slug替换“你的类别slug”。

这是我最后使用的,多亏了mpx9910的回答(谢谢!):

add_action('woocommerce_-before_-cart_-contents','display_-notice_-based_-on_-item_-quantity');
功能显示\通知\基于\项目\数量(){
foreach(WC()->cart->get_cart()作为$cart_项目){
如果($cart_item['quantity']==1)
{
$terms=获取术语($cart\u item['product\u id','product\u cat');
foreach($terms作为$term)
{
如果($term->slug=='您的类别slug')
继续2;
}
if(is_cart())
回声';
printf(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
回声';
打破
}
}
}

多亏了mpx9910的回答(谢谢!),这就是我最后使用的:

add_action('woocommerce_-before_-cart_-contents','display_-notice_-based_-on_-item_-quantity');
功能显示\通知\基于\项目\数量(){
foreach(WC()->cart->get_cart()作为$cart_项目){
如果($cart_item['quantity']==1)
{
$terms=获取术语($cart\u item['product\u id','product\u cat');
foreach($terms作为$term)
{
如果($term->slug=='您的类别slug')
继续2;
}
if(is_cart())
回声';
printf(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
回声';
打破
}
}
}

你能分享到目前为止你已经尝试过的吗?我不能分享我已经尝试过的所有东西,因为我已经花了很长时间弄错了。。。稍后我将添加我当前拥有的更新:)@Lyall请将您的解决方案作为问题的答案而不是编辑发布。您能分享到目前为止您尝试过的内容吗?我无法分享我尝试过的所有内容,因为我花了很长时间都弄错了。。。稍后我将添加我当前拥有的更新:)@Lyall请将您的解决方案作为问题的答案而不是编辑。谢谢!我有没有办法排除某个类别的产品触发它?例如,循环所有不在指定类别中的购物车项目?我将编辑答案以满足此要求:)谢谢!我有没有办法排除某个类别的产品触发它?例如,循环所有不在指定类别中的购物车项目?我将编辑答案以满足此要求:)
   function display_notice_based_on_item_quantity() {

       foreach ( WC()->cart->get_cart() as $cart_item ) {    
            if ( $cart_item['quantity'] == 1 )
            {
                if ( is_cart() )
                    wc_print_notice( sprintf( __("there is an item with qunatity of 1 in the cart", "woocommerce") ), 'notice' );
                break;
            }
       } 

    }
    add_action( 'woocommerce_check_cart_items', 'display_notice_based_on_item_quantity' );
function display_notice_based_on_item_quantity() {

   foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( $cart_item['quantity'] == 1 )
        {
            $terms = get_the_terms( $cart_item['product_id'], 'product_cat' );
            foreach ( $terms as $term )
            {
               if ($term->slug == 'your-category-slug')
                    continue 2;
            }
            if ( is_cart() )
                wc_print_notice( sprintf( __("there is an item with qunatity of 1 in the cart", "woocommerce") ), 'notice' );
            break;
        }
   } 

}
add_action( 'woocommerce_before_cart_contents', 'display_notice_based_on_item_quantity' );
function display_notice_based_on_item_quantity() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {    
            if ( $cart_item['quantity'] == 1 )
            {
             $terms = get_the_terms( $cart_item['product_id'], 'product_cat' );
             foreach ( $terms as $term )
                {
                if ($term->slug == 'your-category-slug')
                    continue 2;
                }
                if ( is_cart() )
                    echo '<div class="cart-qty-notice">';
                    printf( __("Message goes here", "woocommerce"));
                    echo '</div>';
                break;
            }
       }
    }