如何在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
相关产品推荐
相关产品推荐

