我想显示产品的所有类别到每个产品的类别。 如果产品属于多个类别,则仅显示产品的许多类别中的最后一个类别。我希望它显示完整类别。 我使用以下代码:
<?php while ( $query->have_posts() ) : $query->the_post();
global $product, $post;
$classes = '';
$terms_id = array();
$item_cats = get_the_terms( $post->ID, 'product_cat' );
if ( $item_cats ) :
foreach ( $item_cats as $item_cat ) {
$classes = urldecode( $item_cat->slug ) . ' ';
}
endif;
?>
<li class="<?php echo esc_attr($classes) ?>">
<div class="content_product">
</div>
</li>
<?php endwhile;
答案 0 :(得分:1)
它显示了最后一个类别,因为在您的foreach循环中,您每次都在同一变量中重新分配而不是将其串联(或将其压入数组)。
foreach ( $item_cats as $item_cat ) {
$classes = urldecode( $item_cat->slug ) . ' ';
}
您应该寻求:
$classes = [];
foreach ( $item_cats as $item_cat ) {
$classes[] = urldecode( $item_cat->slug ) . ' ';
}
和
<li class="<?php echo esc_attr(implode(' ', $classes)) ?>">
编辑: 或根本没有任何数组(由于需要显示的内容很简单):
foreach ( $item_cats as $item_cat ) {
$classes .= urldecode( $item_cat->slug ) . ' ';
}