为什么输出当前页面标题?

时间:2012-05-23 作者:Kegan Quimby

这在我的侧边栏中。php文件,它被拉入头中。php文件(这是错误的做法吗?)。无论如何,列表中的最后一项是当前页面标题,尽管我的query\\u帖子的参数仅为新闻稿的自定义帖子类型

<?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_posts($args);
    if (have_posts()) : while (have_posts()) : the_post();?>
      <li><a href="<?php the_field(\'pdf\');?>"><?php the_title();?></a></li> 
      <?php wp_reset_query(); endwhile; endif; ?>
    </ul>
</div><!--END sidebar -->

1 个回复
最合适的回答,由SO网友:SickHippie 整理而成

简单回答-因为您正在使用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; ?>

结束

相关推荐

Give Editor Access To Sidebar

我想让编辑器角色有权编辑提要栏及其内容。我有一个文本小部件在那里,为了编辑这个文本小部件,用户需要是管理员-这太糟糕了。如何授予编辑器角色权限,使其能够编辑侧边栏?