恐怕在这种情况下,你必须仔细分析这些类别,并在这里有一些逻辑。您可以使用如下函数:
function filterCategories($postId,$excluded, $separator){
$categoriesToDisplay = \'\';
$count = 0;
$allCategories = get_the_category($postId);
foreach($allCategories as $category) {
if ( !in_array($category->cat_ID, $excluded) ) {
// get that category link
$cat_link = $get_category_link($category->cat_ID);
$categoriesToDisplay .= $cat_link;
// we want a separator, but not at the end...
if($count < count($categories)){
$categoriesToDisplay .= $separator;
}
}
$count++;
}
return $categoriesToDisplay;
}
它将转移您想要的类别,而不包含由您想要的内容(在本例中为“|”)分隔的被排除的链接。您可以在循环中调用它:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $id = get_the_ID(); ?>
<?php echo filterCategories($id, array(1,2,3,4)," | "); ?>
$categories array是类别对象的数组,然后可以显示为:
我还没有测试过,但应该可以。
要获取排除的类别,可以使用名为“排除”的父类别或类似的内容。您可以轻松获得:
$excluded = wp_list_categories("child_of=".$excludedCategoriId);
希望有帮助。