query_posts and sub pages?

时间:2011-11-08 作者:wesbos

我有这样的页面布局

Parent Page
- Sub page 1
-- sub sub 1
-- sub sub 2
-- sub sub 4
- Sub page 2
-- sub sub 1
-- sub sub 2
-- sub sub 4
我想查询每个子页面,无论我的页面有多深。这是我的查询,但它只返回直接子项(子页1和2)

query_posts(\'post_type=page&order=ASC&orderby=menu_order&depth=4&post_parent=\'.$post->ID);
我该怎么做?

2 个回复
SO网友:Krzysiek Dróżdż

我很确定你可以用get_pages (http://codex.wordpress.org/Function_Reference/get_pages) 函数来解决此问题。它有child_of 参数,它完全满足您的需要。

唯一的问题是它返回POST而未设置$wp_query, 所以不能将其用作循环,但可以随时调用setup_postdata 然后像在普通帖子循环中一样使用模板标记。

<?php
    $mypages = get_pages( array( \'child_of\' => <PARENT_PAGE_ID>) );
    foreach( $mypages as $page ):
?>
        <h2><a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo apply_filters(\'the_title\', $page->post_title); ?></a></h2>
        <div class="entry"><?php echo apply_filters( \'the_content\', $page->post_content ); ?></div>
<?php endforeach; ?>

SO网友:b0li

try this

function wpse33151_getSubpages() {      
    global $post;

    $parents = get_post_ancestors($post->post_id);
    krsort($parents);
    $parents = array_merge(array(), $parents);

    if (is_home() || is_single()) {
        $id = get_option(\'page_for_posts\');
        $parent = get_post_ancestors($id);
        $id = $parent[0];
    } elseif($parents) {
        $id = $parents[0];
    } else {
        $id = $post->ID;
    }

    $children = wp_list_pages(\'title_li=&child_of=\' . $id . \'&echo=0\');
    $out = null;

    if ($children) {
        $out = \'\';
        $out .= \'\' . get_the_title($id) . \'\';
        $out .= \'
    \'; $out .= $children; $out .= \'
\'; $out .= \'\'; } return $out; }
结束

相关推荐

Paging on a future post loop?

我试图让寻呼在我未来的post循环中工作,但没有用。尽管数据库中有几个有效的帖子,但我没有得到用于分页的链接,而我希望它们位于底部。<?php $args = array( \'post_type\' => \'program\', \'paged\' => get_query_var(\'paged\') ? get_query_var(\'paged\') : 1, \'posts_per_page\' => 1,&#x