在WP_Query中显示2个级别?

时间:2013-06-12 22:22:12

标签: php wordpress

目前正在运行此

$args = array(
    'post_type'       => 'page',
    'posts_per_page'  => 1,
    'post_parent'     => 1743,      
    'meta_query'      => array(
        array(
            'key'      => 'sticky',
            'value'    => '1',
            'compare'  => '=='
        )
    )
);

$the_query = new WP_Query( $args );

我在post_parent中嵌套了2个页面,但它只拉了一个深度。有什么方法可以将它扩展到直接子项下面的子页面?

1 个答案:

答案 0 :(得分:0)

我没试过这个,但它应该有效:当你在循环中时,对于每个第二层帖子(即你当前能够到达的直接孩子),捕获当前的帖子ID像这样

$level2_parent_ID = $post->ID;

然后使用WP_Query在查询中启动查询,使用$ sub_parent_ID作为post_parent的值。这应该拉起孩子的孩子。

举个例子,继续你离开的地方......

$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
            $level2_parent_ID = $post->ID;
            $level2_args = array(
                'post_type'       => 'page',
                'posts_per_page'  => 1,
                'post_parent'     => $level2_parent_ID,      
                'meta_query'      => array(
                    array(
                        'key'      => 'sticky',
                        'value'    => '1',
                        'compare'  => '=='
                    )
                )
            );

            $level2_query = new WP_Query($level2_args);
            // The Loop-within-a-loop
                if ( $level2_query->have_posts() ) {
                while ( $level2_query->have_posts() ) {
                $level2_query->the_post();
                echo '<li>' . get_the_title() . '</li>';
                }
                }
            //plus whatever else you want to do in the outer loop
    }
} 
/* Restore original Post Data */
wp_reset_postdata();