如何将所有子页面放入其父页面?

时间:2017-08-11 作者:Mithun Nath

<?php

$args = array(
    \'post_type\'      => \'page\',
    \'posts_per_page\' => -1,
    \'post_parent\'    => $post->ID,
    \'order\'          => \'ASC\',
    \'orderby\'        => \'menu_order\'
 );


$parent = new WP_Query( $args );

if ( $parent->have_posts() ) : ?>

    <?php while ( $parent->have_posts() ) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php // the_advanced_excerpt(); ?></p>

        </div>

    <?php endwhile; ?>

<?php endif; wp_reset_query(); ?>
这是我的密码。它应该显示任何父页的所有子页的标题。但是,不幸的是,它只显示网站中的所有页面,包括同一页面和其他页面的子页面。

对此有什么建议吗?

2 个回复
SO网友:Abdullah Alemadi

您应该在$args数组中使用此属性,通过Parent ID

\'child_of\' => 20,
更多信息:https://codex.wordpress.org/Function_Reference/get_pages

SO网友:rudtek

我刚刚在一个网站上用过这个!像这样的事情怎么样:

function rt_list_child_pages() { 
global $post; 
if ( is_page() && $post->post_parent )

    $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
else
    $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );
if ( $childpages ) {
    $string = \'<ul>\' . $childpages . \'</ul>\';
}
return $string;
}
add_shortcode(\'list-childpages\', \'rt_list_child_pages\');
上面的代码首先检查页面是否有父级,或者页面本身是否是父级。如果它是父页,则会显示与其关联的子页。如果它是子页面,则会显示其父页面的所有其他子页面。最后,如果这只是一个没有子页面或父页面的页面,那么代码将什么也不做。在代码的最后一行中,我添加了一个短代码,因此您可以轻松地显示子页面,而无需修改页面模板。

要显示子页面,只需在侧栏中的页面或文本小部件中添加以下短代码:

[rt子页面]

或者您可以添加函数

rt_list_child_pages()
到任何页面模板。

结束

相关推荐

尝试将动态内容调用为ShortCode属性

我正在尝试向现有(第三方)短代码添加动态属性。短代码在同一页上出现多次。当我这样做时(在functions.php中),我可以得到第一个正确输出的短代码,但其他的则不行。function testOne(){ return do_shortcode(\'[abc type=\"contact\" orderby=\"menu_order\" order=\"asc\" style=\"list-post\" logic=\"and\" abc_tax_student=\"student1\