排除_CATEGORY中的所有子类别(帖子)

时间:2014-07-29 作者:tibewww

我正在寻找一种方法来隐藏我帖子中的所有子类别:

它总是显示在我的帖子中,如:分类、子类别。

所以我想排除所有sub\\u类别。

我一直试图欺骗这部分代码:

<?php the_category(\', \') ?>
但我无法使它工作。

如果有人有解决办法,我真的很感激!!:)

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

没有用于的筛选器the_category. 所有这些the_category does is toecho get_the_category_list. 查看wp includes/category模板中的函数。php第273-275行

273 function the_category( $separator = \'\', $parents=\'\', $post_id = false ) {
274         echo get_the_category_list( $separator, $parents, $post_id );
275 }
我个人会这么说the_category 不正确,因为不需要显示任何类型的父/子关系

你可以看看wp_list_categories 这给了你很大的灵活性。wp_list_categories 不仅限于类别,还可以用于自定义分类法。

这里应该查看的参数是depth 您可以设置为

0-所有类别和子类别(默认)。

所有类别以平面(无缩进)形式显示(覆盖层次结构)。

仅显示顶级类别

n-n的值(一些数字)指定显示类别中下降的深度(或级别

这是对codex页面中代码的一个稍加修改的版本。我已经设置了depth 参数到1, 仅显示最顶层的类别级别

<?php 
$taxonomy = \'category\';

// get the term IDs assigned to post.
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( \'fields\' => \'ids\' ) );
// separator between links
$separator = \', \';

if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {

    $term_ids = implode( \',\' , $post_terms );
    $terms = wp_list_categories( \'title_li=&style=none&echo=0&depth=1&taxonomy=\' . $taxonomy . \'&include=\' . $term_ids );
    $terms = rtrim( trim( str_replace( \'<br />\',  $separator, $terms ) ), $separator );

    // display post categories
    echo  $terms;
}
?>

结束

相关推荐

Get a list of categories ids

我正在使用基于自定义帖子类型的过滤器制作一个公文包。该过滤器必须只显示公文包中显示的帖子的类别,因为用户可以在短代码中通过id指定它们-[公文包id=“1,2,3”],而我无法获得该类别id的列表。下面是一个简单的例子,说明我正在尝试做什么:来自快捷码的自定义帖子ID列表:$ids 相同ID的数组:$id_array = explode(\',\', $ids) 必须返回类别ID列表的感兴趣的变量:$cat_ids = ??? 接下来,我们只获取具有所需id的类别:$ca