我有一个foreach循环(wordpress模板),列出了除“最新新闻”类别之外的所有帖子类别:
<?php
$exclude = array("Top News");
$catagorystring = '';
foreach((get_the_category()) as $category) {
if ( !in_array($category->cat_name, $exclude) ) {
$catagorystring .= '<a href="'.get_category_link($category->term_id ).get_option('category_base').'" class="category-link-einrichtungen">' . $category->name . '</a>, ';
}
}
echo substr($catagorystring, 0, strrpos($catagorystring, ','));
?>
这是有效的,但另外我也想隐藏“顶级新闻”的儿童类别。
有一个wordpress功能允许我做这样的事情:
<?php if(post_is_in_descendant_category('3') ) {
echo 'is in category 3';
} ?>
但我不知道如何将其纳入foreach循环。
答案 0 :(得分:1)
您可以使用类别对象的parent
属性,并根据exclude
数组中任何类别的ID进行检查:
$excludedCategories = array();
foreach((get_the_category()) as $category) {
$breakLoop = false;
if (!in_array($category->cat_name, $exclude)) {
foreach($exclude as $cat_name_to_exclude) {
if($category->parent == get_cat_ID($cat_name_to_exclude)) {
$breakLoop = true;
}
}
if($breakLoop) {
array_push($excludedCategories, $category);
continue;
}
$categorystring .= '<a href="'.get_category_link($category->term_id ).get_option('category_base').'" class="category-link-einrichtungen">' . $category->name . '</a>, ';
}
}