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

基于自定义分类法替换WooCommerce相关商品无结果问题

解决WooCommerce相关商品改为同商家(自定义分类法)展示的问题

看起来你之前的代码没写完或者参数设置有问题,我给你整理了一套完整的可行方案,直接替换你之前的代码就行:

完整实现代码

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

    // 先做基础校验:确保当前是有效产品页面,且自定义分类法存在
    if ( ! is_a( $product, 'WC_Product' ) || ! taxonomy_exists( 'vendor_name' ) ) {
        return $args;
    }

    // 获取当前产品关联的vendor_name分类ID
    $vendor_terms = wp_get_post_terms( $product->get_id(), 'vendor_name', array( 'fields' => 'ids' ) );

    // 如果当前产品没分配商家分类,直接返回默认逻辑,避免出错
    if ( empty( $vendor_terms ) ) {
        return $args;
    }

    // 核心修改:让相关商品查询只包含同商家分类的产品
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'vendor_name',
            'field'    => 'term_id',
            'terms'    => $vendor_terms,
            'operator' => 'IN',
        )
    );

    // 排除当前产品本身,避免自己出现在相关商品里
    $args['post__not_in'] = array( $product->get_id() );

    // 可选:调整显示的相关商品数量,默认是4,你可以改成你需要的数字
    $args['posts_per_page'] = 4;

    return $args;
}

为什么之前的代码可能没生效?

我猜你之前的代码可能有这些问题:

  • 代码不完整(比如foreach没写完),导致逻辑中断
  • 用了$post->ID而不是WooCommerce推荐的$product->get_id(),在变体产品这类场景下会出错
  • 没有设置正确的tax_query参数,这是WordPress查询分类内容的核心条件
  • 缺少基础校验,比如分类不存在时的处理,容易引发报错

使用说明

  1. 把这段代码复制到你当前主题的functions.php文件末尾,或者用专门的代码管理插件(比如Code Snippets)来添加,避免主题更新丢失代码
  2. 确认你的自定义分类法vendor_name确实存在,并且已经给产品分配了对应的商家分类
  3. 刷新产品页面,就能看到相关商品只展示同商家的产品了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:27