获取产品的所有类别

时间:2018-10-11 09:50:33

标签: php arrays woocommerce

我想显示产品的所有类别到每个产品的类别。 如果产品属于多个类别,则仅显示产品的许多类别中的最后一个类别。我希望它显示完整类别。 我使用以下代码:

<?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;

1 个答案:

答案 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 ) . ' ';
    }