因此,我开发了一个单页主题,它将父页面的子页面拉入,以便创建布局。我还将其设置为拉取每个子页面页面模板,并相应地显示内容,如下所示。
<?php
/* Template Name: Page- Home */
get_header(); ?>
<?php
$this_page=get_query_var(\'page_id\');
$loop = new WP_Query( array(\'post_type\'=>\'page\', \'posts_per_page\' => -1, \'post_parent\' => $this_page, \'orderby\' => \'menu_order\', \'order\' => \'ASC\') );
while ( $loop->have_posts() ) : $loop->the_post();
$template = get_post_meta( $post->ID, \'_wp_page_template\', true );
?>
<?php include(locate_template($template)); ?>
<?php endwhile; wp_reset_postdata(); ?>
<?php get_footer(); ?>
这在主页上非常有效,但我在尝试使用相同的公司信息模板创建另一个父页面时遇到了问题。正如我所说的,我在这个新模板中有相同的代码,但有些东西弄乱了,在About页面中,它只显示来自
<head>
部分到我的
<header>
. 不显示页脚和页脚以外的内容。但我发现,我可以对include进行注释,而且效果很好。
有什么想法吗?谢谢
最合适的回答,由SO网友:Jesse Winton 整理而成
我在这里发现了问题。它是和$this_page
变量,它仍然引用主页,并阻止about页面工作。我必须简单地修改它如何提取页面ID和存储它。
这是我修改后的代码。
<?php
/* Template Name: Page- Home */
get_header(); ?>
<?php
$this_page=get_the_ID();
$loop = new WP_Query( array(\'post_type\'=>\'page\', \'posts_per_page\' => -1, \'post_parent\' => $this_page, \'orderby\' => \'menu_order\', \'order\' => \'ASC\') );
while ( $loop->have_posts() ) : $loop->the_post();
$template = get_post_meta( $post->ID, \'_wp_page_template\', true );
?>
<?php include(locate_template(array($template), false, true)); ?>
<?php endwhile; wp_reset_query(); ?>
<?php get_footer(); ?>