显示包含内容的子页完整模板

时间:2017-07-20 作者:GrampaRay

在父页面上,我想显示所有子页面(仅第一个子页面),包括其模板。

例如

Pages:

Parentpage (Templatename: parentpage)
- Child A (Templatename: childpage)
- Child B (Templatename: childpage)
-- SecondChild B (Templatename: secondchildpage)
- Child C (Templatename: childpage)
在模板的父页中,我有以下内容:

 <?php
    getchilds = array(
        \'parent\'        => $post->ID,
        \'child_of\'      => $post->ID, 
        \'sort_column\'   => \'menu_order\',
        \'sort_order\'    => \'ASC\'        
    ); 

    $postliset = get_pages($getchilds);
        foreach ($postliste as $post) {
        echo $post->post_content;
    }
?>
这将显示父页上所有子页的内容。到目前为止还不错,but 我希望它也包括子页面的模板部分。因此,如果我的子页面模板会说:

<div class="childpagestest">
[...]
        <?php the_content(); ?> 
[...]
</div>
父页面应包含此代码。

我搜索了WP的整个功能代码,找到了类似于\\u模板的东西,但什么都没有。

有什么想法吗?

提前非常感谢您。

1 个回复
最合适的回答,由SO网友:Worduoso 整理而成

我会尝试在循环中设置post数据,然后使用调用页面模板get_template_part 作用注意:根据主题,它可能会产生一些意外的结果,因为页面模板有时还包括站点页眉和页脚。但这是让你开始的事情。

$getchilds = array(
    \'parent\'        => $post->ID,
    \'child_of\'      => $post->ID,
    \'sort_column\'   => \'menu_order\',
    \'sort_order\'    => \'ASC\'
);

$postlist = get_pages($getchilds);

foreach ($postlist as $post) {

    // setup post data, so page template will use it as a "master" post
    setup_postdata($post); 

    // we get page template name for the post and remove ".php" at the end to make it work
    $template = preg_replace("/\\.php$/", "", get_page_template_slug($post) ); 

    // now let WordPress fetch that page for you
    echo get_template_part($template);        
}

结束

相关推荐