从帖子元中隐藏特定类别

时间:2017-10-17 作者:IXN

这是我在post meta上显示类别的代码:

$categories_list = get_the_category_list(  \', \', \'ixn\' );
printf( \'<span class="cat-links">\' . ( \'Category: %1$s\', \'ixn\' ) . \'</span>\', $categories_list ); 
(\'ixn\'是主题名称)

有没有一种简单的方法可以从post meta上显示的类别中隐藏一个称为“站点”的特定类别?

我已经阅读了这些假定的解决方案,但它们可能对我所需要的内容来说是多余的,并且不适合我的代码,因为它们不使用get_the_category_list:

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

This 是有效的代码。虽然它很吸引人the_category 而不是在the_category_listget_the_categoty_list 它工作完美无瑕。

function the_category_filter($thelist,$separator=\' \') {
    if(!defined(\'WP_ADMIN\')) {
        //list the category names to exclude
        $exclude = array(\'Mac\',\'Windows\');
        $cats = explode($separator,$thelist);
        $newlist = array();
        foreach($cats as $cat) {
            $catname = trim(strip_tags($cat));
            if(!in_array($catname,$exclude))
                $newlist[] = $cat;
        }
        return implode($separator,$newlist);
    } else
        return $thelist;
}
add_filter(\'the_category\',\'the_category_filter\',10,2);
如果希望仅在单个帖子中限制此排除,可以将代码包含在如下If语句中:

if ( is_single() ) {
// Above code goes here
}
附言:我仍然想知道是否有更好的解决方案。例如,通过使用以下内容:get_the_categories_list(\'exclude=1,22\') 在我的代码中。

SO网友:Rarst

通过快速浏览相关函数,我认为没有一个函数可以检索帖子的术语,并允许显式排除。

但是有一个方便的过滤器the_category_list 在将类别对象转换为HTML输出之前,在您使用的函数内部,使用类别对象数组。

这应该是一个非常适合检查数组并排除希望跳过的类别的位置。一如既往,请注意只在所需上下文中添加过滤器,或检查其中的上下文。

结束