在Get_Posts中运行Get_Posts以获取子级的子级

时间:2016-06-20 作者:morgyface

我有一个称为“的分层自定义帖子类型”courses”.

当你到达一个课程帖子时,会检查帖子是否有孩子。如果课程发布has 它运行的儿童get_posts 显示这些子级的列表。

这就是我挣扎的地方;子列表项的一部分详细信息是显示子帖子的子项数量。因此,我尝试在get\\u posts中运行get\\u posts,但这并没有按预期工作。

为了把事情放在背景中,也许可以更好地解释事情,下面是一些层次结构:

Adobe>Acrobat>入门课程Adobe” 他们得到了孩子们的名单,两个项目:

杂技演员&1门课程可用”,Framemaker应该说“2门课程可用”。

这行不通。潜艇get_posts 不返回任何内容。我的具体问题是;当一个孩子在一个get_posts 环还是我应该尝试另一种方法?

我当前的(简化)代码。。。

$postid = get_the_ID();
$kids = array(
    \'post_type\' => \'courses\',
    \'post_parent\' => $postid
);
$children = get_posts( $kids );
if ( $children ) {
    echo \'<ul>\';
    foreach( $children as $child ) {
        $childid = $child->ID;
        $coursetitle = get_the_title( $childid );
        $grandkids = get_posts( array(
            \'post_type\' => \'courses\',
            \'post_parent\' => $childid
        ) );
        $grandchildren = count($grandkids);
        echo \'<li>\';
        echo $coursetitle;
        echo $grandchildren . \'courses available\';
        echo \'</li>\';
    }
}
如果您能提供任何帮助,我们将不胜感激。

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

您的代码应该可以工作,可能是后端中的每页帖子选项设置为1. 明确设置posts_per_page 在查询参数中。如果只需要知道孙辈帖子的数量,就可以返回帖子ID,这样也可以加快代码的速度。

下面是一个示例:(从代码中复制和修改)

$postid = get_the_ID();
$kids = array(
    \'posts_per_page\' => -1,
    \'post_type\'      => \'courses\',
    \'post_parent\'    => $postid
);
$children = get_posts( $kids );
if ( $children ) {
    echo \'<ul>\';
    foreach( $children as $child ) {
        $childid     = $child->ID;
        $coursetitle = get_the_title( $childid );
        $grandkids   = get_posts( array(
            \'posts_per_page\' => -1,
            \'fields\'         => \'ids\', // Only get post id\'s, much faster
            \'post_type\'      => \'courses\',
            \'post_parent\'    => $childid
        ) );
        $grandchildren = count( $grandkids );
        echo \'<li>\';
        echo $coursetitle;
        echo $grandchildren . \'courses available\';
        echo \'</li>\';
    }
}
如果这不起作用,那么您很可能有什么东西干扰了您的查询,可能是一个坏消息pre_get_posts 在某处行动。要对此进行测试,请添加remove_all_actions( \'pre_get_posts\' ); 在您的查询之前。

你也可以看看get_pages() 运行不会被正常WP_Query 筛选器和操作

相关推荐

Taxonomy filter all children

我有一个自定义分类过滤器,它将过滤选定分类中的所有页面。我希望代码能够选择该分类法中的页面,以及千页的子页面。这是密码。add_action(\'restrict_manage_posts\', \'restrict_manage_posts_section\'); function restrict_manage_posts_section() { global $post_type; if ( is_object_in_taxonomy( $post_t