如何在所有页面wordpress上显示一个父母的子页面

时间:2011-05-18 13:36:52

标签: php wordpress

我试图在我的wordpress网站的所有页面中显示页脚中的地毯子页面。

我正在使用的页脚中的代码是

            <?php
        global $wp_query;
        $post = $wp_query->post;
        $ancestors = get_post_ancestors($post);
        if( empty($post->post_parent) ) {
            $parent = $post->ID;
        } else {
            $parent = end($ancestors);
        }
        if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) { ?>

        <ul class="footerNav clearfix">
            <?php wp_list_pages("title_li=&child_of=$parent&depth=1" ); ?>
        </ul><!-- #secondary-nav -->

        <?php } ?>

然而,当您在相关的类别中时,这仅显示页脚中的子页面,我希望在所有页面上看到此导航。

谢谢,

周六

这是指向页脚的页面的链接,我在所有页面上都喜欢它

http://satbulsara.com/luke-irwin/rugs/new-in/fishy/

1 个答案:

答案 0 :(得分:1)

使用

$post = $wp_query->post;
$ancestors = get_post_ancestors($post);

变量 $ post 被分配了访问者当前正在查看的帖子。

如果您想在所有页面上显示 rugs 的所有孩子的菜单,则只需要代码的底部。此外, child_of 参数不需要通过变量分配,您可以输入 rugs 的静态页面ID,即 173

<ul class="footerNav clearfix">
    <?php wp_list_pages("title_li=&child_of=173&depth=1&sort_column=post_name" ); ?>
</ul><!-- #secondary-nav -->

这三行足以为您生成菜单。您周围的 if 语句会检查特定父页是否有子项,如果是这种情况,则只生成无序列表。既然你知道它存在于这种情况下,我会把它留下来并保存这两行。为了完整起见,我已经包含了 sort_column 参数 - 这将为您提供所有地毯的按字母顺序排序的菜单。

if 语句上方的代码仅适用于根据访问者当前所在页面而变化的动态菜单。如果你想要实现这样一个菜单,我仍然会采用不同的方式,并认为上面的内容是膨胀的。只需插入

<?php $ancestors = get_post_ancestors($post); ?>

进入 header.php 文件,可以使用

在其他地方生成动态菜单
<?php if (is_page(173) || in_array(173,$ancestors)) { ?>
    <ul class="subnav">
        <?php wp_list_pages('title_li=&child_of=173&depth=1'); ?>
    </ul>
<?php } ?>

如上所述,对于您的特定情况,第一个代码块三线程就足够了。

进一步参考:WP Codex: wp_list_pages