
本文介绍如何通过 WordPress 钩子 woocommerce_attribute_label 动态将当前商品名称前置到所有产品属性标签前,实现如“Car 1 Brand:Honda”的自定义显示效果。
本文介绍如何通过 wordpress 钩子 `woocommerce_attribute_label` 动态将当前商品名称前置到所有产品属性标签前,实现如“car 1 brand:honda”的自定义显示效果。
在 WooCommerce 默认行为中,商品属性(如 Brand、Model)仅以纯标签形式展示(例如 “Brand:Honda”)。若需增强可读性或满足特定品牌展示规范,可将当前商品名称动态注入到每个属性标签开头。这无需修改模板文件,仅需一段轻量级钩子代码即可实现。
实现方法
使用 woocommerce_attribute_label 过滤器,在属性标签渲染前动态拼接商品名称:
add_filter( 'woocommerce_attribute_label', 'custom_attribute_label', 1000, 2 );
function custom_attribute_label( $label, $name ) {
global $product;
// 确保在有效的产品上下文中执行
if ( is_a( $product, 'WC_Product' ) && $product->get_name() ) {
return $product->get_name() . ' ' . $label;
}
return $label;
}✅ 说明:
- 优先级设为 1000,确保在其他插件或主题修改后仍生效;
- 使用 is_a( $product, 'WC_Product' ) 安全判断当前对象类型,避免潜在的 PHP 错误;
- $product->get_name() 获取原始商品名称(已过滤 XSS,安全可靠);
- 该钩子作用于所有属性标签(包括自定义属性和系统内置属性),全局生效。
注意事项
- 请将代码添加至当前启用主题的 functions.php 文件,或封装为独立插件;
- 若使用子主题,请优先放入子主题 functions.php,避免父主题更新时丢失;
- 某些第三方属性插件可能绕过此钩子,如遇失效,可结合 woocommerce_display_product_attributes 过滤器二次处理;
- 如需对特定属性(如仅 Brand)生效,可在函数内加入 $name === 'pa_brand' 等条件判断。
通过此方案,您能统一、可维护地增强属性信息的语义表达,提升用户浏览体验,同时保持代码简洁与 WooCommerce 兼容性。

















