迭代对象数组以定制定制帖子类型的完整定制分类的显示

时间:2020-01-27 作者:James

我也读过类似的问题,但我还没有完全理解如何做到这一点。

我创建了一个自定义帖子类型,并为其创建了一个名为kernal_category.

我正在存档页面上显示我的自定义帖子,并可以使用以下代码输出最低级别的类别:

if(get_the_terms($post->ID, \'kernal_category\', true)) {
        $kernal_category = get_the_terms($post->ID, \'kernal_category\', true);           

        foreach ($kernal_category as $category) {
              echo $category->name.\' > \';
                # code...
        }
}
这对于只有一个任期的职位来说很好。但我有多篇文章都有分级分类法。我希望我的代码像面包屑一样完整地显示这些分类法。因此,如果只有一个术语,则应如下所示:

News

如果有多个,则应如下所示:

News > Studio News > America

为了实现这一点,我想添加> 除最后一个术语外,所有术语之间的符号。由于使用foreach循环时,我不知道如何指示代码不添加\'>\' 上一学期后的符号。

我目前得到的是:News > Studio News > America >

我试着了解如何使用While 循环对象,但无法理解它。下面是具有多个术语的my Array对象的示例:

 object(WP_Term)#3621 (10) {
   ["term_id"]=>
   int(7)
   ["name"]=>
   string(4) "News"
   ["slug"]=>
   string(4) "news"
   ["term_group"]=>
   int(0)
   ["term_taxonomy_id"]=>
   int(7)
   ["taxonomy"]=>
   string(15) "kernal_category"
   ["description"]=>
   string(0) ""
   ["parent"]=>
   int(0)
   ["count"]=>
   int(1)
   ["filter"]=>
   string(3) "raw"
 }
 [1]=>
 object(WP_Term)#3625 (10) {
   ["term_id"]=>
   int(9)
   ["name"]=>
   string(11) "Studio News"
   ["slug"]=>
   string(11) "studio-news"
   ["term_group"]=>
   int(0)
   ["term_taxonomy_id"]=>
   int(9)
   ["taxonomy"]=>
   string(15) "kernal_category"
   ["description"]=>
   string(0) ""
   ["parent"]=>
   int(7)
   ["count"]=>
   int(1)
   ["filter"]=>
   string(3) "raw"
 }
}


1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

而不是echo立即将类别名称保存到数组中,然后可以implode 数组,这意味着在项目之间使用任何分隔符输出它:

<?php
if(get_the_terms($post->ID, \'kernal_category\', true)) {
        // Create an empty array
        $categories = [];
        $kernal_category = get_the_terms($post->ID, \'kernal_category\', true);
        // Save each category to the array
        foreach ($kernal_category as $category) {
              $categories[] = $category->name;
        }
        // Now output with implode
        echo implode(\' > \', $categories);
}
?>
这样,空格和插入符号分隔符将位于项目之间,但不会位于最后一个项目之后。

相关推荐