我认为你的结构是错误的。我将从循环中完全删除您的自定义查询,并将其移到外部。另一种选择是在自定义查询中使用其他变量名,并直接使用WP_Post
对象
正如@Milo已经解释的,您的自定义查询很可能会影响$post
全球的
选项1将自定义查询移到循环之外(注意:未测试)
<section class="main-section">
<header>
<h1 class="section-header"><?php the_category(\'/\', \'\', get_queried_object_id() );?></h1>
<ul class="section-nav">
<?php
$cat = get_the_category( get_queried_object_id() )[0];
$categoryPosts = get_posts( array( \'category\' => $cat->term_id ) );
foreach($categoryPosts as $post): setup_postdata($post);
?>
<li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php unset( $post ); ?>
<?php endforeach; ?>
</ul>
</header>
然后正常运行循环。
the_post()
在循环中,将重置
$post
全局到主查询
<?php while(have_posts()): the_post();?>
<h2 class="section-blurb"><?php the_title();?></h2>
<div class="info">
<?php the_content(); ?>
</div>
</section>
<?php endwhile;?>
选项2使用不同的变量名(
注意:未测试)<?php while(have_posts()): the_post();?>
<section class="main-section">
<header>
<h1 class="section-header"><?php the_category(\'/\');?></h1>
<ul class="section-nav">
<?php
$cat = get_the_category()[0];
$categoryPosts = get_posts(array(\'category\' => $cat->term_id));
foreach($categoryPosts as $categoryPost):
$title = apply_filters( \'the_title\', $categoryPost->post_title ); ?>
<li>
<a href="<?php the_permalink();?>">
<?php echo $title; ?>
</a>
</li>
<?php endforeach; ?>
<?php unset( $categoryPost ); ?>
</ul>
</header>
<h2 class="section-blurb"><?php the_title();?></h2>
<div class="info">
<?php the_content(); ?>
</div>
</section>
<?php endwhile;?>