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

WooCommerce面包屑自定义问题:术语存在但term_exists返回null

问题排查与解决方案

核心原因:错误的分类法参数

你代码中$taxonomy = 'ANIMALS';是错误的——ANIMALS是产品分类的术语名称,而WooCommerce产品分类的标准分类法(taxonomy)slug是product_cat。term_exists()的第二个参数必须传入分类法的slug,而非术语名称,这是导致函数返回null的直接原因。

额外优化:术语查询的可靠性

即使修正分类法参数,用术语名称($crumb[0])查询仍可能遇到问题:

  • 术语名称可能存在大小写差异(比如后台术语名称是Animals,面包屑显示ANIMALS)
  • 不同术语可能重名,但slug是唯一的

因此建议从面包屑的URL中提取术语slug进行查询,结果更稳定。

修改后的代码

function custom_breadcrumb( $crumbs, $object_class ){
    // 调试代码上线前建议注释
    // echo "<!-- DEBUG_crumbs " . print_r($crumbs, true) . "-->";

    // WooCommerce产品分类的正确分类法slug
    $taxonomy = 'product_cat';

    foreach( $crumbs as $key => &$crumb ){
        $term_name = $crumb[0];
        // echo "<!-- DEBUG_crumb0 " . print_r($term_name, true) . "-->";
        // echo "<!-- DEBUG_taxonomy " . print_r($taxonomy, true) . "-->";

        // 先尝试用名称查询
        $term_array = term_exists( $term_name, $taxonomy );
        
        // 名称查询失败时,从URL提取slug重试
        if ( $term_array === null || $term_array === 0 ) {
            $url_parts = explode('/', trim($crumb[1], '/'));
            $term_slug = end($url_parts);
            $term_array = term_exists( $term_slug, $taxonomy );
        }

        // echo "<!-- DEBUG_term_Exists " . print_r($term_array, true) . "-->";
            
        if ( $term_array !== 0 && $term_array !== null ) {
            $term = get_term( $term_array['term_id'], $taxonomy );
            // echo "<!-- DEBUG3 " . print_r($term, true) . "-->";
            
            // 设置自定义链接
            $custom_url = 'https://customurl.com';
            $crumbs[$key][1] = $custom_url ;    
        }   
    }
    return $crumbs;
}
// 确保添加钩子(如果之前没加)
add_filter( 'woocommerce_get_breadcrumb', 'custom_breadcrumb', 10, 2 );

验证要点

  1. 确认product_cat是当前使用的产品分类法(如果是自定义分类法则替换为对应slug)
  2. 检查术语的slug与URL中的最后一段是否一致(比如你的示例中URL是/product-category/animals/,slug就是animals)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:25:55