我有一个WP查询列出匹配的产品,如下所示:
function sku_ean_sizes () {
global $product;
$current_stijlcode = $product->get_attribute( 'pa_stijlcode' );
$current_ean = $product->get_attribute( 'pa_ean' );
$postid = get_the_ID();
$args = array(
'post_type' => 'product',
'orderby' => 'meta_value_num',
'meta_key' => '_price',
'order' => 'asc',
'posts_per_page' => 100,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'pa_stijlcode',
'field' => 'slug',
'terms' => $current_stijlcode,
),
array(
'taxonomy' => 'pa_ean',
'field' => 'slug',
'terms' => $current_ean,
)
)
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
foreach( wc_get_product_terms( $product->id, 'pa_maat' ) as $attribute_value ){
echo '<span>' . $attribute_value . '</span>';
}
endwhile;
} else {
// no sku matches found
}
wp_reset_postdata();
}
我想使用foreach循环列出附加到WP查询中找到的产品的找到的产品属性:
global $product;
foreach( wc_get_product_terms( $product->id, 'pa_maat' ) as $attribute_value ){
echo '<span>' . $attribute_value . '</span>';
}
此代码有效。但是,$attribute_value
变量输出重复记录。这是有道理的,因为多个产品可以具有相同的输出。
我可以进行哪些调整以排除重复值?
在上下文中;这是为了显示特定产品的所有可用尺寸。
答案 0 :(得分:1)
<强>更新强>
您应该使用foreach循环来设置数组中的所有值,避免重复
然后,使用implode()
PHP函数,您将显示所有属性术语名称而不重复。
这个替换你的部分代码会一次显示所有产品的非重复属性名称:
$loop = new WP_Query( $args );
if ( $loop->have_posts() ):
$maat_term_names = array();
while ( $loop->have_posts() ):
$loop->the_post();
// Set the attribute term names in an array avoiding duplicates
foreach( wc_get_product_terms( $loop->post->ID, 'pa_maat' ) as $attribute_value ):
$maat_term_names[$attribute_value] = $attribute_value;
endforeach;
endwhile;
// Sorting (ordering)
sort($maat_term_names);
// Here you display attribute term names without duplicates (coma separated)
echo '<span>' . implode( '</span>, <span>', $maat_term_names ) . '</span> ';
else:
echo '<span>No SKUs matches found</span>';
endif;
wp_reset_postdata();