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

如何在Woocommerce单个品牌页面显示文本?代码故障排查求助

解决WooCommerce单个品牌页面自定义文本不显示的问题

你的代码存在几个关键逻辑和语法问题,导致无法正常生效,我来帮你逐一修正并解释:

原代码的核心问题

  • 使用了中文单引号(‘’),PHP仅识别英文单引号(''),这会直接引发语法解析错误
  • 在品牌分类存档页面(is_tax('product_brand')为真时),$post->ID是无效的——因为这不是单个产品页面,不存在当前Post对象,所以wp_get_post_terms根本拿不到品牌数据
  • 直接把$brand(WP_Term对象)和字符串'BRAND_NAME'比较,逻辑错误,应该比较品牌的名称或别名(slug)

修正后的完整代码

function woo_brand_page_check() { 
    // 确认当前是product_brand分类页面
    if (is_tax('product_brand')) { 
        // 获取当前品牌分类的Term对象
        $current_brand = get_queried_object();
        
        // 替换成你要匹配的品牌名称(或用slug更稳定)
        $target_brand = 'BRAND_NAME'; 
        // 如果用slug匹配,改成:$target_brand = 'your-brand-slug';
        
        // 匹配品牌名称(或替换成$current_brand->slug匹配别名)
        if ($current_brand->name === $target_brand) { 
            echo '<p>Custom text here!</p>';
        }
    }
} 
add_action('woocommerce_before_shop_loop', 'woo_brand_page_check');

关键修改说明

  1. 替换中文单引号:把所有中文的‘’换成英文的'',避免语法报错
  2. 获取当前品牌对象:用get_queried_object()直接获取当前分类页面的Term对象,这是分类存档页面获取当前分类的标准方式
  3. 正确的比较逻辑:通过$current_brand->name(品牌显示名称)或者$current_brand->slug(品牌别名,更稳定,因为名称可能修改)来匹配目标品牌
  4. 简化代码结构:去掉了不必要的循环和空else分支,逻辑更清晰

额外提示

  • 推荐用品牌slug做匹配,因为名称可能会被修改,而slug一般不会变动
  • 可以把echo的内容换成任意HTML,比如带自定义样式的文本:echo '<div class="custom-brand-text">欢迎访问专属品牌页面!</div>'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:17:42