0

上次我检查时,我知道如何编写一个循环来显示我所有的帖子.....但是当我写这个时:

if (have_posts()){
    while (have_posts()): the_post();
    ?>
    <div clas="span6">
        <h3><a href="<?php echo the_permalink(); ?>"><?php echo the_title(); ?></a></h3>
        <p><?php echo the_excerpt(); ?></p>
    </div>
    <?php
    endwhile;
}

我遇到了一个问题:

如果我有以下帖子:

帖子 1、帖子 2、​​帖子 3

帖子 1 - 2 将显示在列表中,直到我写了一篇新帖子(帖子 4)并发布它,帖子 3 才会显示在该列表中。

那么我的循环有什么问题?

以前从未有过这个问题。

注意:正在使用 WordPress 3.5。

我检查了WordPress 文档,以确保我做的事情是正确的,并且据我所知。

4

2 回答 2

0

我看到了一些可能导致您的问题的事情。首先,您有一组{ }不需要的。您对循环的开放应该是:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

代替:

<?php if (have_posts()){ while (have_posts()): the_post(); ?>

看到循环中的大括号了吗?

然后正如 McNab 所说,只需通过添加“s”来修复您的 div 类并echo从内容拉取器中删除。

您还需要endif;endwhile;.

所以你的完整循环应该像这样循环:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <div class="span6">
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <p><?php the_excerpt(); ?></p>
    </div>

<?php endwhile; endif; ?>

我认为这应该可以解决您的问题。

于 2012-12-14T19:08:33.517 回答
0

你可以像下面这样使用它。这主要用于wordpress。

if (have_posts()) :  // your code if (have_posts()){
   while (have_posts()): the_post();
   ?>
   <div clas="span6">
      <h3><a href="<?php echo the_permalink(); ?>"><?php echo the_title(); ?></a></h3>
      <p><?php echo the_excerpt(); ?></p>
   </div>
   <?php
   endwhile;
endif; //your code here }

希望它可以工作。

于 2012-12-14T18:59:56.053 回答