如何仅显示最后一个子类别的帖子

时间:2014-10-06 作者:Innate

默认情况下,WordPress将列出其层次结构中每个类别的帖子。

示例:

父母亲

/-儿童

/--孙子

当查看“家长”类别时,您将看到一个来自孩子、孙子和家长的帖子列表,即使帖子只是勾选了“孙子”。

我的问题是:如何仅在查看最后一个孩子时显示帖子?是否有内置的WordPress功能?

e、 g.:

[grandchild categories] = array of grandchildren

if(in_array( [grandchild categories] )) : show posts

else:

do nothing

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

当然有include_children 的参数WP_Query 作为taxonomy parameters. 我想对你来说应该是这样的:

$args = array(
    \'tax_query\' => array(
        array(
            \'include_children\' => false
        ),
    ),
);
$query = new WP_Query( $args );
或通过parse_tax_query 对于您的类别存档:

add_filter( 
    \'parse_tax_query\', 
    \'wpse163572_do_not_include_children_in_category_archive_parse_tax_query\' 
);
function wpse163572_do_not_include_children_in_category_archive_parse_tax_query( $query ) {
    if ( 
        ! is_admin() 
        && $query->is_main_query()
        && $query->is_category()
    ) {
        // as seen here: http://wordpress.stackexchange.com/a/140952/22534
        $query->tax_query->queries[0][\'include_children\'] = 0;
    }
}
注:多亏了@PieterGoosen,现在已经测试并确认其工作正常。

SO网友:Innate

我们这些已经开发了带有页面的静态网站的人会理解这个问题,正如Pieter在上面的评论中所概述的那样。

从本质上讲,如果可以创建一个页面并在该页面上列出内容,则可以达到预期效果,但使用wp中的类别系统来管理内容并对其进行排序是很有用的。

以下是我所做的工作:

我写了一个小函数“get_term_children“-wordpress函数。

function category_has_children( $term_id ){ 
    $children = get_term_children( $term_id, "category" );
    if(is_array($children)){
      return $children;
    } else {
      return false;
    }
}
然后在循环之前的“我的类别”页面上检查“category\\u has\\u children”:

<?php if( category_has_children( $cat ) == false) : ?>

show posts as this is the last child category.

<? endif; ?>

结束

相关推荐

Show Pages in Categories

通过将此代码添加到函数中,我创建了category函数。php:function page_category() { register_taxonomy_for_object_type(\'category\', \'page\'); } // Add to the admin_init hook of your theme functions.php file add_action( \'init\', \'page_category\' ); 但问