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

WooCommerce:在单产品页展示同COLLECTION_ID属性的关联产品

在WooCommerce单个产品页展示同COLLECTION_ID的关联产品

没问题,这需求很常见,我给你一套靠谱的实现方案,直接用代码就能搞定,不用装额外插件。

第一步:确认属性设置前提

首先先确认下你的COLLECTION_ID产品属性是全局属性(不是产品自定义属性),并且所有需要关联的产品都已经正确设置了对应的属性值——这是后续代码生效的基础,如果是自定义属性的话,后面我会给你对应的调整方案。

第二步:添加核心功能代码

你可以把下面的代码添加到你的子主题functions.php文件里,或者用专门的代码片段插件(比如Code Snippets)来添加,这样能避免主题更新丢失代码:

add_action( 'woocommerce_after_single_product_summary', 'display_related_products_by_collection_id', 25 );
function display_related_products_by_collection_id() {
    global $product;
    
    // 获取当前产品的COLLECTION_ID属性值
    $collection_id = $product->get_attribute('COLLECTION_ID');
    
    // 如果当前产品没设置COLLECTION_ID,直接停止执行
    if( empty($collection_id) ) return;
    
    // 设置查询参数,找同COLLECTION_ID的产品
    $args = array(
        'post_type'      => 'product',
        'posts_per_page' => 8, // 这里可以改你想显示的产品数量
        'post__not_in'   => array( $product->get_id() ), // 排除当前产品本身
        'tax_query'      => array(
            array(
                'taxonomy' => 'pa_collection_id', // 注意:全局属性的分类法是pa_前缀+属性名小写
                'field'    => 'slug',
                'terms'    => sanitize_title($collection_id), // 转成slug格式匹配
            )
        )
    );
    
    $related_collection_products = new WP_Query( $args );
    
    // 如果找到匹配的产品,就输出标题和产品列表
    if( $related_collection_products->have_posts() ) {
        echo '<section class="related-collection-products">';
        echo '<h2>同系列产品</h2>'; // 这个标题你可以随便改,比如"同系列精选"
        echo '<ul class="products columns-4">'; // columns-4是4列布局,改成和你主题一致的列数就行
        
        while( $related_collection_products->have_posts() ) {
            $related_collection_products->the_post();
            wc_get_template_part( 'content', 'product' ); // 用你主题自带的产品模板渲染,风格统一
        }
        
        echo '</ul></section>';
        wp_reset_postdata(); // 重置查询,避免影响后续内容
    }
}

关键参数说明

  • posts_per_page:控制显示多少个关联产品,按需调整数字就行。
  • columns-4:产品列表的列数,比如你的主题用3列就改成columns-3,保证和主题布局统一。
  • pa_collection_id:这里的pa_是WooCommerce全局属性的固定前缀,后面跟你的属性名小写,要是你属性名是Collection-ID,那这里就改成pa_collection-id,别写错了。

如果是自定义属性(非全局)的调整方案

要是你的COLLECTION_ID是产品自定义属性(不是全局属性),那上面的tax_query要改成meta_query,替换掉$args里的tax_query部分就行:

'meta_query'     => array(
    array(
        'key'     => 'attribute_COLLECTION_ID', // 自定义属性的meta key是attribute_+属性名
        'value'   => $collection_id,
        'compare' => '='
    )
)

可选:样式微调

如果关联产品的布局和你主题不太搭,可以加一点自定义CSS来调整,比如:

.related-collection-products {
    margin: 40px 0;
    padding-top: 20px;
    border-top: 1px solid #eee;
}
.related-collection-products h2 {
    margin-bottom: 25px;
    font-size: 22px;
    text-align: center;
}
.related-collection-products .products {
    gap: 15px;
}

把这段CSS加到主题的自定义CSS面板,或者子主题的style.css里就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:44:13