所以我希望这个标题不会让人感到困惑,让我试着把它分解。
我有一个content-page.php文件,其中包含get_content和get_sidebar函数。如果我导航到前端的那个页面,我会看到我的内容和侧边栏。
在home.php页面上,我使用$ the_query = new WP_Query加载一系列页面,然后在该查询中使用循环并在该循环内部调用内容-page.php。
问题在于,如果在home.php页面上加载的页面有侧边栏,由于某种原因,在侧边栏之后没有任何内容加载即。 get_content()
不返回任何内容,comments_template()
不返回任何内容,等等。
这是标记的(非常)简化版本,主页:
$the_query = new WP_Query( array(
'post_type' => 'page'));
$x = 0;
while ( $the_query->have_posts() ) :
$the_query->the_post();
get_template_part( 'content', 'page' );
$x++;
endwhile;
wp_reset_query();
内容page.php文件:
<article <?php post_class(); ?>>
<header>
<h1><?php the_title(); ?></h1>
</header>
<div class="entry-content">
<?php include( TEMPLATEPATH . '/sidebar.php'); ?>
<?php the_content(); ?>
</div><!-- .entry-content -->
</article><!-- #post-<?php the_ID(); ?> -->
的sidebar.php:
<div id="secondary" class="widget-area" role="complementary">
<?php do_action( 'before_sidebar' );
dynamic_sidebar( 'sidebar-1' ); ?>
</div><!-- #secondary .widget-area -->
我有什么明显的遗漏吗?一直在研究这个。一如既往,非常感谢任何帮助。
答案 0 :(得分:1)
WordPress中有两种类型的常规循环查询:
由于主查询控制了许多内容,例如“是否有侧边栏?”或“应该使用哪个页面模板?”您只能提交其中一种类型。您不能在子循环内调用单独的侧边栏(或调用单独的页面模板)。为此,您必须重新执行基本的WordPress侧边栏系统。
我认为,您尝试做的最好的选择就是提供某种动态内容,并将其称为侧边栏。换句话说,WordPress已经决定了第一次调用侧边栏时发生了什么。系统没有一种默认方式来处理一遍又一遍地调用侧边栏。在子循环的每次迭代之后使用短代码或过滤器将是更好的方法。
答案 1 :(得分:0)
关闭“)”打开括号。
$the_query = new WP_Query( array( 'post_type' => 'page') );
答案 2 :(得分:0)
将此代码粘贴到content-page.php
中<?php get_template_part( 'sidebar' ); ?>
<?php the_content(); ?>
尝试删除do_action( 'before_sidebar' );
答案 3 :(得分:0)
你可以尝试:
include( locate_template( 'content-page.php', false, false ) );
而不是:
get_template_part('content', 'page');