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

咨询:如何让WooCommerce单品页仅显示子分类相关产品

解决WooCommerce单品页仅显示子分类相关产品的问题

嘿,这个问题我之前帮不少店铺主和开发者解决过——WooCommerce默认的相关产品逻辑确实会把父分类的产品也拉进来,尤其是当你的产品挂在多个大父分类下时,很容易出现“随机凑数”的情况。下面给你两个针对新版本WooCommerce的可行方案,放心用:

方案一:通过自定义代码实现(推荐,灵活可控)

你可以将以下代码添加到子主题的functions.php文件中,或者用代码片段插件插入(避免主题更新丢失代码):

add_filter( 'woocommerce_related_products_args', 'custom_related_products_args' );
function custom_related_products_args( $args ) {
    global $product;

    // 获取当前产品的所有分类
    $categories = get_the_terms( $product->get_id(), 'product_cat' );
    if ( empty( $categories ) ) {
        return $args; // 若无分类,沿用默认逻辑
    }

    // 筛选出所有子分类(parent不为0的分类)
    $child_category_ids = array();
    foreach ( $categories as $category ) {
        if ( $category->parent !== 0 ) {
            $child_category_ids[] = $category->term_id;
        }
    }

    // 若有子分类,修改查询参数
    if ( ! empty( $child_category_ids ) ) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'product_cat',
                'field'    => 'id',
                'terms'    => $child_category_ids,
                'operator' => 'IN',
            ),
        );
    }

    // 排除当前产品本身
    $args['post__not_in'] = array( $product->get_id() );

    return $args;
}

代码说明:

  • 先获取当前产品的所有分类,筛选出其中的子分类(即parent字段不为0的分类)
  • 修改相关产品的查询条件,只展示属于这些子分类的产品
  • 如果产品没有子分类,会自动 fallback到WooCommerce默认逻辑,不会出错
  • 确保当前产品不会出现在相关产品列表里

方案二:使用可视化插件(适合不想写代码的用户)

如果你不想折腾代码,可以找专门控制WooCommerce相关产品的插件,比如WooCommerce Related Products for Specific Categories这类工具:

  • 安装激活后,你可以在产品编辑页或插件设置里,直接设置“仅显示当前产品子分类下的相关产品”
  • 这类插件一般都支持最新版WooCommerce,操作界面直观,不需要懂代码就能搞定

注意事项

  • 用代码方案时,一定要用子主题或者代码片段插件(比如Code Snippets)添加代码,别直接修改主题的functions.php,否则主题更新后代码会丢失
  • 测试前记得清空WooCommerce缓存,确保修改生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:22:57