从wordpress循环显示错误的帖子标题

时间:2014-12-17 22:46:52

标签: wordpress-theming wordpress

我正在建立自己的主题。我为我的博客设置了一个页面(我制作了一个模板),我只想展示一些帖子。它使用以下循环:

<?php
   query_posts('post_type=post');
   if (have_posts()) {
      while (have_posts()) {
?>

<div class="blog_post">
   <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
   <div class="entry_date"><?php the_time('F jS, Y') ?></div>
   <?php
      the_post();
      the_content();
   ?>
</div>

<?php
      }
   }
?>

我的帖子标题分别是“第一篇,第二篇,第三篇,第四篇”。当帖子显示在博客页面上时,它们会以正确的顺序显示,但帖子的标题不正确。第一篇文章的标题是:“第二篇文章”。第二篇文章的标题是:“第三篇”,依此类推,直到最后一篇(最近的)帖子有标题:“博客”(页面标题)。他们搞砸的头衔怎么了?

我尝试过的事情: 在我来到这儿之前,我已经研究了很多。我尝试使用get_the_title(),但这导致没有显示标题。我也试过使用the_title_attribute()无济于事。我也明白我不应该在这个循环中使用query_posts,但我不确定在这种特殊情况下使用哪个正确的方法来获取帖子。我读过的大部分信息都不清楚,但似乎没有解决问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试以下方法:未经测试

<?php
global $post;
$args = array();
$myposts = get_posts( $args );
foreach( $myposts as $post ) :
  setup_postdata($post); ?>
    YOUR HTML HERE
<?php endforeach; 
wp_reset_postdata(); ?>

答案 1 :(得分:0)

好的没关系!我刚刚发现了问题所在。我把“the_post()”移到了while循环之后,所以它现在读起来像这样:

<?php
        query_posts('post_type=post');
        if (have_posts()) {
            while (have_posts()) {
                the_post();
                ?>
                <div class="blog_post">
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <div class="entry_date"><?php the_time('F jS, Y') ?></div>
                    <?php
                    the_content();
                    ?>
                </div>
                <?php
            }
        }
        ?>

当我在wordpress codex中阅读有关the_post()时,我找到了这个解决方案。事实证明这个函数正在为行中的下一个帖子设置信息,因此不应该与当前帖子的html输出混在一起。

关于我是否应该使用“query_posts()”仍然是我不确定并愿意接受任何建议的事情。但是它当前形式的循环正在发挥作用。