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

如何在WooCommerce商品页仅显示有库存的产品尺码属性值?

修改WooCommerce商品列表页属性显示:仅展示有库存的尺码

替换你当前的代码为以下版本,即可只显示库存数量大于0的尺码属性值:

add_action( 'woocommerce_after_shop_loop_item', 'custom_loop_product_meta', 50 );
function custom_loop_product_meta() {
    global $product;
    
    if( ! is_object( $product ) ) { 
        $product = wc_get_product( get_the_id() );
    } 
    
    if( $product->is_type('variable') ) {
        $available_sizes = array();
        
        // 获取产品所有变体
        $variations = $product->get_available_variations();
        
        foreach ( $variations as $variation ) {
            $variation_product = wc_get_product( $variation['variation_id'] );
            
            // 筛选库存数量大于0的变体
            if ( $variation_product->get_stock_quantity() > 0 ) {
                $size = $variation_product->get_attribute('pa_size');
                // 避免重复添加同一尺码
                if ( !empty($size) && !in_array($size, $available_sizes) ) {
                    $available_sizes[] = $size;
                }
            }
        }
        
        // 仅当有可用尺码时输出
        if ( !empty($available_sizes) ) {
            echo '<div class="pa-block">';
            echo esc_html( pll__( 'Sizes' ) );
            echo '<span class="pa-block-text">: ' . implode(', ', $available_sizes) . '</span>';
            echo '</div>';
        }
    }
}

关键逻辑说明:

  • 初始化空数组$available_sizes,用于存储符合条件的尺码
  • 遍历可变产品的所有变体,逐个检查库存数量是否大于0
  • 对符合条件的尺码做去重处理,避免同一尺码重复显示
  • 仅当存在可用尺码时,才输出属性区块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:32:24