在WordPress中在父页面的侧边栏中显示子页面

时间:2011-07-14 作者:user4490

如何在侧边栏中的父页面和该父页面的子页面上显示子页面?试图从wp codex页面和其他几个站点粘贴代码,但没有成功。我总是得到子页面列表,而不是父页面列表!?问题是什么?值得一提的是,可能很重要,所有父页面都有自己的页面模板。

示例代码:

    <?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) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
我也尝试this code 在我看来,这似乎是上帝的工作,但我再次得到了父页面列表

4 个回复
SO网友:Chip Bennett

如果你不想要一个页面列表,那你为什么要打电话wp_list_pages() 在您的代码中?该函数返回页面列表。

你可能need to use get_posts() instead, 然后循环结果以输出任何内容$post 要显示的内容。

e、 g.您可以执行以下操作:

<?php
global $post;
$child_pages = get_posts( array(
    \'post_parent\' => $post->ID
) );
?>
<ul>
<?php
foreach ( $child_pages as $child ) {
    ?>
    <li>
        <h3><?php echo $child->post_title; ?></h3>
        <div><?php echo $child->post_content; ?></div>
    </li>
    <?php
}
?>
</ul>

EDIT

如果需要访问$post->ID 从循环外部,在循环内部执行以下操作:

$current_post_id = $post->post_ID;
那么,只要使用$current_post_id 循环外部。(请注意,您只希望在显示单个帖子的模板页面上执行此操作;否则$current_post_id 将在foreach 循环。)

然后您可以更改get_posts() 相应呼叫:

$child_pages = get_posts( array(
    \'post_parent\' => $current_post_id
) );

SO网友:Amazing Sey

这对我很有用:注意孩子身上的深度wp_list_pages.

<?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=&depth=1&child_of=".$post->ID."&echo=0");
    if ($children) { ?>

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

SO网友:Shovan

这是我正在使用的解决方案

<?php
   if ($post->post_parent)  {
        $ancestors=get_post_ancestors($post->ID);
        $root=count($ancestors)-1;
        $parent = $ancestors[$root];
    } else {
        $parent = $post->ID;
    }
    $children = wp_list_pages("title_li=&child_of=". $parent ."&echo=0");
    if ($children) { ?>
    <ul class="tabs vertical hide-on-phones three columns">
        <li>Hekki</li>
        <?php echo $children; ?>
    </ul>
<?php } ?>
我希望也显示父页面。

SO网友:Nathan Fitzgerald - Fitzgenius

Try this

    <ul class="sidenav">
    <?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) { ?>
    <ul>
        <?php echo $children; ?>
    </ul>
    <?php } ?>          
    </ul>
结束

相关推荐

Excluding Pages not working

前几天我试图设置一些页面来保存作者信息(只能从帖子底部的作者片段中访问),显然这些页面出现在<?php wp_list_pages(\'title_li=\'); ?> , 我确定了我的页面顺序(0-5是必须存在的页面,我将特殊页面设置为以44开头,以防他们添加一些页面),然后尝试<?php wp_list_pages(\'title_li=&exclude=44\'); ?>. 然而,0-5分和44分出现了。有没有想过为什么这种情况仍在发生?