在父页面上,我想显示所有子页面(仅第一个子页面),包括其模板。
例如
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模板的东西,但什么都没有。
有什么想法吗?
提前非常感谢您。
最合适的回答,由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);
}