简单回答-因为您正在使用query_posts()
, 这将更改主查询。它几乎总是产生意想不到的结果,因为你现在发现了艰难的道路。
通常,最好使用get_sidebar()
而不是include
(您可能是这样,但不清楚),我更喜欢在主循环运行后调用它,以便使用新的WP_Query()
相反这将用全新的数据取代当前的循环,这将是我选择的解决方案。代替query_posts($args)
具有$query = new WP_Query($args)
你应该准备好了。通常,我会说把你的wp_reset_query()
同样,由于您在页眉中调用它,因此必须保留它,以便为页面的其余部分提供正常的页面数据。这将导致一些开销,但如果您有良好的缓存,则根本不会注意到它。
编辑“工作”代码示例:
<?php
if (function_exists(\'dynamic_sidebar\') && dynamic_sidebar(\'Sidebar Widget\')) : else : ?>
<div id="sidebar" class="newsletters">
<h2>Newsletters</h2>
<ul>
<?php
$args = array (\'post_type\' => \'newsletters\');
$query = new WP_Query($args);
while ( $query->have_posts() ) : $query->the_post();
$pdf=get_field(\'pdf\');
echo "<li>";
echo \'<a href="\'.$pdf.\'">\';
the_title();
echo "</a></li>";
endwhile; wp_reset_postdata(); ?>
</ul>
</div><!--END sidebar -->
<?php endif; ?>