【问题标题】:Is my loop done wrong - WordPress我的循环做错了吗 - WordPress
【发布时间】:2012-12-14 18:34:17
【问题描述】:

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

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;
}

我遇到了一个问题:

如果我有以下帖子:

Post1、Post2、Post3

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

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

以前从未遇到过这个问题。

注意:正在使用 WordPress 3.5。

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

【问题讨论】:

  • @hd1 have_posts() 方法是一种 wordpress 方法。请参阅他的链接文档。
  • 不,我正在正确使用它。我正在阅读循环文档

标签: php wordpress loops wordpress-theming


【解决方案1】:

我发现有几件事可能会导致您的问题。首先,您有一组不需要的{ }。你的循环应该是:

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

代替:

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

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

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

您还需要在endwhile; 之后添加一个endif;。

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

<?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; ?>

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

【讨论】:

  • 这并没有解决我的问题。我仍然只收到四个帖子中的 3 个
【解决方案2】:

你可以像下面这样使用它。这个主要用在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 }

希望它可以工作。

【讨论】:

  • 是您的所有帖子已发布,意味着任何一个处于草稿或私有状态。
猜你喜欢
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2015-08-26
  • 1970-01-01
  • 2018-05-30
  • 2014-02-06
相关资源
最近更新 更多