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

如何移除WooCommerce产品附加信息栏属性列表的链接?

解决WooCommerce产品属性值的链接移除问题

关于替代参数的疑问

首先明确:$product_attribute数组里确实包含'name'(属性的显示名称)和'slug'(属性的别名,比如pa_color),但这两个都是属性本身的标识,不是你要的属性值内容。直接替换成slug或name只会显示属性名(比如“颜色”),而不是具体的属性值(比如“红色”),所以没法直接用它们替代value来实现需求。

移除链接的两种有效方法

方法1:直接剥离HTML标签(最简单通用)

当前代码里的wp_kses_post( $product_attribute['value'] )会保留WooCommerce自动生成的<a>链接标签,我们只需要用strip_tags()过滤掉所有HTML标签,就能得到纯文本属性值:

<td class="woocommerce-product-attributes-item__value"><?php echo strip_tags( wp_kses_post( $product_attribute['value'] ) ); ?></td>

这样处理后,不管是分类式属性(带链接)还是自定义文本属性,都会只显示纯文本,同时wp_kses_post先做安全过滤,再用strip_tags剥标签,能避免XSS风险。

方法2:针对分类属性精准获取纯文本(更可控)

如果你的属性是WooCommerce的产品分类属性(比如颜色、尺寸这类通过后台术语管理的属性),可以直接获取术语对象来拿到无链接的名称,这种方法更精准:

<td class="woocommerce-product-attributes-item__value">
<?php
// 判断当前属性是否是分类式属性
if ( taxonomy_exists( $product_attribute['name'] ) ) {
    // 通过属性值的slug获取术语对象
    $term = get_term_by( 'slug', $product_attribute['value'], $product_attribute['name'] );
    // 如果术语存在,输出纯文本名称,否则输出原始值
    echo $term ? esc_html( $term->name ) : esc_html( $product_attribute['value'] );
} else {
    // 自定义文本属性,直接输出纯文本
    echo esc_html( $product_attribute['value'] );
}
?>
</td>

重要提醒

修改WooCommerce模板时,不要直接修改核心模板文件!建议把/woocommerce/templates/single-product/product-attributes.php复制到你的子主题目录/your-child-theme/woocommerce/single-product/下,再修改子主题里的文件,这样主题或WooCommerce更新时不会覆盖你的修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:27:23