Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取产品的所有类别_Php_Arrays_Woocommerce - Fatal编程技术网

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