Php 获取产品的所有类别
我想向每个产品的类显示产品的所有类别。 如果产品属于多个类别,则仅显示产品多个类别中的最后一个类别。我想让它显示完整的类别。 我使用以下代码:Php 获取产品的所有类别,php,arrays,woocommerce,Php,Arrays,Woocommerce,我想向每个产品的类显示产品的所有类别。 如果产品属于多个类别,则仅显示产品多个类别中的最后一个类别。我想让它显示完整的类别。 我使用以下代码: <?php while ( $query->have_posts() ) : $query->the_post(); global $product, $post; $classes = ''; $terms_id = array(); $item_cats = get_the_terms
<?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;
它显示最后一个类别,因为在foreach循环中,您在同一个变量中重新分配了eachtime,而不是将其串联(或将其放入数组中)
你应该选择:
$classes = [];
foreach ( $item_cats as $item_cat ) {
$classes[] = urldecode( $item_cat->slug ) . ' ';
}
及
你错过了concat
symbol,$classes.=
这对我来说现在好多了。这对我来说现在好多了。
$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 ) . ' ';
}