如何修改WooCommerce短代码仅展示pa_maat属性为L的产品变体
筛选pa_maat属性为L的产品变体列表解决方案
需求说明
修改现有短代码,仅展示属性pa_maat术语为L的产品变体,每个对应产品需包含pa_kleur的3种颜色(wit、sportgrijs、zwart)L码变体。
修改后的代码片段
add_shortcode( 'single_variations', 'bs_single_variations_shortcode' ); function bs_single_variations_shortcode() { $query = new WP_Query( array( 'post_type' => 'product_variation', 'post_status' => 'publish', 'posts_per_page' => 50, 'paged' => absint( empty( $_GET['product-page'] ) ? 1 : $_GET['product-page'] ), // 添加属性筛选条件 'meta_query' => array( array( 'key' => '_attribute_pa_maat', 'value' => 'L', 'compare' => '=', ), ), )); if ( $query->have_posts() ) { ob_start(); wc_setup_loop( array( 'name' => 'single_variations', 'is_shortcode' => true, 'is_search' => false, 'is_paginated' => true, 'total' => $query->found_posts, 'total_pages' => $query->max_num_pages, 'per_page' => $query->get( 'posts_per_page' ), 'current_page' => max( 1, $query->get( 'paged', 1 ) ), ) ); woocommerce_pagination(); woocommerce_product_loop_start(); while ( $query->have_posts() ) { $query->the_post(); wc_get_template_part( 'content', 'product' ); } woocommerce_product_loop_end(); woocommerce_pagination(); wp_reset_postdata(); wc_reset_loop(); return ob_get_clean(); } return; }
修改说明
- 在
WP_Query参数中新增meta_query,通过_attribute_pa_maat元键筛选值为L的变体(WooCommerce会将产品属性以_attribute_pa_属性名的格式存储在postmeta中) - 该筛选条件会自动匹配所有包含pa_maat=L的变体,自然覆盖pa_kleur的3种颜色变体(只要对应颜色的L码变体存在)
- 保留原有的分页、产品循环和模板渲染逻辑,确保展示样式与原有短代码一致
内容的提问来源于stack exchange,提问作者Empire Hive
相关产品推荐
相关产品推荐

