我也读过类似的问题,但我还没有完全理解如何做到这一点。
我创建了一个自定义帖子类型,并为其创建了一个名为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"
}
}
最合适的回答,由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);
}
?>
这样,空格和插入符号分隔符将位于项目之间,但不会位于最后一个项目之后。