INCLUDE(LOCATE_TEMPLATE)破坏了循环

时间:2016-05-26 作者:Jesse Winton

因此,我开发了一个单页主题,它将父页面的子页面拉入,以便创建布局。我还将其设置为拉取每个子页面页面模板,并相应地显示内容,如下所示。

<?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进行注释,而且效果很好。

有什么想法吗?谢谢

1 个回复
最合适的回答,由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(); ?>

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla