如何在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');
关键修改说明
- 替换中文单引号:把所有中文的
‘’换成英文的'',避免语法报错 - 获取当前品牌对象:用
get_queried_object()直接获取当前分类页面的Term对象,这是分类存档页面获取当前分类的标准方式 - 正确的比较逻辑:通过
$current_brand->name(品牌显示名称)或者$current_brand->slug(品牌别名,更稳定,因为名称可能修改)来匹配目标品牌 - 简化代码结构:去掉了不必要的循环和空else分支,逻辑更清晰
额外提示
- 推荐用品牌slug做匹配,因为名称可能会被修改,而slug一般不会变动
- 可以把
echo的内容换成任意HTML,比如带自定义样式的文本:echo '<div class="custom-brand-text">欢迎访问专属品牌页面!</div>'
内容的提问来源于stack exchange,提问作者Vicky Fi
相关产品推荐
相关产品推荐

