如何在所有页面上显示一个父级的子页面 WordPress.


how to show child pages of one parent on all pages 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/

通过使用

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

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

如果你想要所有页面上所有地毯子项的菜单,你只需要代码的底部。另外,child_of参数不需要通过变量赋值,你可以输入地毯的静态页面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); ?>

您的标题中.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法典:wp_list_pages