如何在WooCommerce可变产品标签旁显示选中的属性选项名称?
解决WooCommerce属性标签旁仅显示选中属性值的问题
你当前使用get_the_terms()获取的是该产品关联的所有属性术语(比如可变产品的父产品会包含该属性的全部可选值),因此会输出所有选项而非选中的单个/多个值。
修改后的代码
<th class="label"> <label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label> <?php global $product; // 获取当前产品选中的pa_spieki属性值 $selected_spieki = $product->get_attribute('pa_spieki'); // 仅当有选中值时输出 if ( ! empty( $selected_spieki ) ) { echo ' ' . esc_html( $selected_spieki ); } ?> </th>
代码说明
- 获取产品对象:通过
global $product;确保能访问当前WooCommerce产品实例;若代码不在产品循环/模板中,可改用$product = wc_get_product(get_the_ID());获取。 - 获取选中属性值:使用WooCommerce内置的
get_attribute()方法,传入属性slug(此处为pa_spieki),该方法会自动适配产品类型返回对应值:- 简单产品:已分配的属性值
- 可变产品:当前选中变体的属性值
- 多选属性:逗号分隔的选中值列表
- 安全输出:用
esc_html()转义输出内容,规避XSS安全风险。 - 空值判断:添加
! empty()逻辑,避免属性未选中时输出空白内容。
若场景为购物车/订单页面,需获取购物车项目的属性值,可替换为以下代码:
// 假设$item为购物车项目对象 $selected_spieki = $item->get_meta('pa_spieki');
内容的提问来源于stack exchange,提问作者Patryk Banach
相关产品推荐
相关产品推荐

