WordPress WooCommerce商品列表页属性值显示异常修复求助
修正WooCommerce商品列表页属性显示问题
嘿,我一眼就揪出问题所在啦!你当前的代码里,每次循环调用$product->get_attribute()时都一股脑传入了所有属性参数,但这个方法只需要接收单个分类法参数,所以不管循环到哪个属性,它都只会返回第一个参数pa_country的值,这就导致所有属性显示的都是同一个内容。
修正后的完整代码
add_action('woocommerce_after_shop_loop_item_title','add_attribute'); function add_attribute() { global $product; // 定义要显示的属性分类法 $product_attributes = array( 'pa_country','pa_class','pa_faction','pa_gender' ); $attr_output = array(); foreach( $product_attributes as $taxonomy ){ if( taxonomy_exists($taxonomy) ){ $label_name = get_taxonomy( $taxonomy )->labels->singular_name; // 关键修改:传入当前循环的$taxonomy,获取对应属性值 $value = $product->get_attribute($taxonomy); if( ! empty($value) ){ $attr_output[] = '<span class="'.$taxonomy.'">'.$label_name.': '.$value.'</span>'; } } } if( !empty($attr_output) ){ echo '<div class="product-attributes">'.implode( '<br>', $attr_output ).'</div>'; } }
关键修改点说明
- 核心修复:把
$product->get_attribute('pa_country','pa_class','pa_faction','pa_gender')改成$product->get_attribute($taxonomy),让每次循环都获取当前属性分类法对应的正确值。 - 额外优化:增加了
if( !empty($attr_output) )判断,避免当所有属性都为空时输出空的<div>标签,让代码更严谨。
现在把这段代码替换你原来的代码,商品列表页就能正确显示每个属性对应的专属值啦!
内容的提问来源于stack exchange,提问作者Skinsky Gnudy
相关产品推荐
相关产品推荐

