You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce实现商品加购人数展示并按数量条件切换提示文案

你可以通过两种方案实现文案的条件化调整,修改后代码完全兼容原有逻辑:

方案1:简单条件判断(适合不需要多语言的中文站点)

直接修改原有代码的输出逻辑即可,代码更轻量:

function show_no_of_people_added_in_cart(){
    global $wpdb, $product;
    $in_basket = 0;
    $wc_session_data = $wpdb->get_results( "SELECT session_key FROM {$wpdb->prefix}woocommerce_sessions" );
    $wc_session_keys = wp_list_pluck( $wc_session_data, 'session_key' );
    if( $wc_session_keys ) {
        foreach ( $wc_session_keys as $key => $_customer_id ) { 
            // 如需排除当前访问用户自己的加购统计保留此行,不需要可直接删除
            if( WC()->session->get_customer_id() == $_customer_id ) continue;
            
            $session_contents = WC()->session->get_session( $_customer_id, array() );
            $cart_contents = maybe_unserialize( $session_contents['cart'] );
            if( $cart_contents ){
                foreach ( $cart_contents as $cart_key => $item ) {
                    if( $item['product_id'] == $product->get_id() ) {
                        $in_basket += 1;
                    }
                }
            }
        }
    }

    if( $in_basket ) {
        $cart_tip = $in_basket === 1 ? '当前有1人将这件商品加入了购物车' : "当前有{$in_basket}人将这件商品加入了购物车";
        echo '<div class="in-basket">' . $cart_tip . '</div>';
    }
}

add_action( 'woocommerce_after_shop_loop_item_title', 'show_no_of_people_added_in_cart', 11 );
add_action( 'woocommerce_single_product_summary', 'show_no_of_people_added_in_cart', 21 );

方案2:WordPress标准单复数处理(适合需要做多语言翻译的站点)

使用WordPress内置的_n()函数处理单复数,符合WP开发规范,后续适配多语言无需二次修改:

function show_no_of_people_added_in_cart(){
    global $wpdb, $product;
    $in_basket = 0;
    $wc_session_data = $wpdb->get_results( "SELECT session_key FROM {$wpdb->prefix}woocommerce_sessions" );
    $wc_session_keys = wp_list_pluck( $wc_session_data, 'session_key' );
    if( $wc_session_keys ) {
        foreach ( $wc_session_keys as $key => $_customer_id ) { 
            // 如需排除当前访问用户自己的加购统计保留此行,不需要可直接删除
            if( WC()->session->get_customer_id() == $_customer_id ) continue;
            
            $session_contents = WC()->session->get_session( $_customer_id, array() );
            $cart_contents = maybe_unserialize( $session_contents['cart'] );
            if( $cart_contents ){
                foreach ( $cart_contents as $cart_key => $item ) {
                    if( $item['product_id'] == $product->get_id() ) {
                        $in_basket += 1;
                    }
                }
            }
        }
    }

    if( $in_basket ) 
        echo '<div class="in-basket">' . sprintf( _n( '当前有%d人将这件商品加入了购物车', '当前有%d人将这件商品加入了购物车', $in_basket, 'text-domain' ), $in_basket ) . '</div>';
}

add_action( 'woocommerce_after_shop_loop_item_title', 'show_no_of_people_added_in_cart', 11 );
add_action( 'woocommerce_single_product_summary', 'show_no_of_people_added_in_cart', 21 );

内容的提问来源于stack exchange,提问作者Syrehn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:48:02