如何在wordpress中获取父页面的所有子页面?

时间:2013-05-10 18:15:22

标签: php wordpress parent-child

示例:

About
--- Menu 1
--- Menu 2
--- Menu 3
--- Menu 4

如果我在关于页面...我有子页面。 但是,如果进入菜单1,所有页​​面都会消失

我需要的是一直看到父页面

目前我有这段代码

<? if (is_page()) {
    $g_page_id = $wp_query->get_queried_object_id();
    wp_list_pages("depth=4&title_li=&child_of=".$g_page_id."&sort_column=menu_order");
   }
?>

谢谢!

解决

我用这个并且工作正常!

<?php if ( is_page() ) { ?>

                <?php
                if($post->post_parent)
                $children = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0'); else
                $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
                if ($children) { ?>

                <div class="title"><?php
                $parent_title = get_the_title($post->post_parent);
                echo $parent_title;
                ?><span></span></div>

                <ul>
                    <?php echo $children; ?>
                </ul>

                <?php } } ?>

2 个答案:

答案 0 :(得分:8)

你走了。对于作者来说有点晚了,但人们仍会来这里寻求答案; - )

<?php 
// determine parent of current page
if ($post->post_parent) {
    $ancestors = get_post_ancestors($post->ID);
    $parent = $ancestors[count($ancestors) - 1];
} else {
    $parent = $post->ID;
}

$children = wp_list_pages("title_li=&child_of=" . $parent . "&echo=0");

if ($children) {
?>

    <ul class="subnav">
        <?php 
            // current child will have class 'current_page_item'
            echo $children; 
        ?>
    </ul>

<?php 
} 
?>

答案 1 :(得分:0)

最简单的方法是使用get_children()。它几乎可以满足您的期望。它返回父页面的子页面。

get_children()基本上是WP_Query类的包装。

您可以像这样使用它...

$child_args = array(
    'post_parent' => 1, // The parent id.
    'post_type'   => 'page',
    'post_status' => 'publish'
);

$children = get_children( $child_args );

如果您想返回当前帖子的子级,则可以将$post->ID作为'post_parent'传递。

Documentation for get_children()

Documentation for WP_Query