带有Get_the_Terms的Foreach循环的不完整术语段输出

时间:2021-12-06 作者:BlueDogRanch

我使用这个PHP在一个产品页面上获取所有产品类别的slug:

global $post;
$terms = get_the_terms( $post->ID, \'product_cat\' );
if(is_array($terms)){
foreach ($terms as $term) {
    $product_cat_slug = $term->slug;
    $product_cat_slugs = \' product_cat-\' . $product_cat_slug;
    echo $product_cat_slugs;
}
}
生产线echo $product_cat_slugs; 输出product_cat-category1 product_cat-category2, 我将用于div类。

问题是当我删除echo $product_cat_slugs; 从上面的功能和使用<?php echo $product_cat_slugs; ?> 在页面的其他地方,我只得到了最后一个类别的slugproduct_cat-category2, 而不是两个类别product_cat-category1 product_cat-category2.

怎么了?看来$product_cat_slugs 在foreach之外时被覆盖;我怎样才能防止这种情况?

1 个回复
SO网友:vancoder

您正在覆盖$product_cat_slugs 在循环的每次迭代中,所以当循环完成时,该变量将设置为最后一个值。

为什么不将所有输出都放在该循环中?

或者如果出于某种原因你不想那样做$product_cat_slugs 数组而不是变量:

$product_cat_slugs = [];
foreach ($terms as $term) {
    $product_cat_slug = $term->slug;
    $product_cat_slugs[] = \' product_cat-\' . $product_cat_slug;
}