wordpress主循环显示文章方法

2020年01月4日21:13:03 发表评论 热度500 ℃

wordpress主循环显示文章方法

如何精确控制每一篇文章比如:第一篇文章显示摘要,后面的只显示标题。。。还有第一篇文章显示广告之类的。。。。
首页显示文章的代码一般都是:

  1. <?php if (have_posts()) : ?>           <!--检查是否有文章如果有,继续执行,没有就跳到  else 那里-->
  2. <?php  while (have_posts()) : the_post(); ?>   <!--开始准备文章内容,开始循环,每次循环输出一篇文章-->
  3. 此处显示文章内容或标题之类的。。
  4. <?php  endwhile ; ?>        <!-- while 循环结束-->
  5. <?php  else : ?>
  6. 此处显示未找到文章时的信息,比如404相关
  7. <?php  endif ; ?>        <!-- if 结束-->

下面红色内容摘自http://www.phpdo.net/index.php/wordpress-have_posts-the_post.html
这里有两个函数,have_posts()和the_post()。
WordPress的have_posts() 默认是一个全局函数。
have_posts函数被调用时实际上是调用全局变量 $wp_query -&gt;have_posts()成员函数,来简单检查一个全局数组 ( array )变量 $posts 的一个循环计数器,以确认是否还有post,如果有返回true(1),如果没有返回false(0)。
the_post()函数则调用 $wp_query -&gt;the_post()成员函数前移循环计数器,并且创建一个全局变量 $post (不是 ),把当 前的post的所有信息都填进这个 $post 变量中,以备接下来使用。

要想精确的控制每篇文章,我们先在循环前定义一个变量 $ashu_i=1 来计数,变量名随便,然后每循环一次,$ashu_i加1,例子我把index.php中的代码改成下面的--

  1. <?php if (have_posts()) :$ashu_i=0;?>
  2. <?php while (have_posts()) : the_post();$ashu_i++;?>
  3. <?php echo "这是第 $ashu_i 篇文章:<br/>";?>
  4. <?php the_title();?>
  5. <?php echo "<hr>";
  6. <?php endwhile; ?>
  7. <?php else : ?>
  8. 此处显示未找到文章时的信息,比如404相关
  9. <?php endif; ?>

我的测试网站中有6篇文章,我设置首页显示5篇文章,测试结果如图:

上面的例子就给每篇文章来了个简单控制。

具体要想让第一篇文章显示摘要,而余下的显示标题--代码:

  1. <?php if (have_posts()) :$ashu_i=0;?>                       <!--检查是否有文章,并定义计数变量初始值为0 -->
  2. <?php while (have_posts()) : the_post();$ashu_i++;?> <!-- 开始循环,第一次循环$sahu_i为1,第二次为2,依次。。 -->
  3. <?php if($ashu_i==1){?>                     <!-- 如果是第一篇文章 -->
  4. <?php the_content();}else{?>                   <!-- 显示内容 -->
  5. <?php the_title();}?>                         <!-- 如果不是第一篇显示标题 -->
  6. <?php endwhile; ?>                            <!-- 一次while循环结束 -->
  7. <?php else : ?>                                    <!--如果没有文章-->
  8. 此处显示未找到文章时的信息,比如404相关
  9. <?php endif; ?> <!--if结束 -->

上面的代码就可以实现第一篇文章显示摘要,而后面的文章都只显示标题。。。

本文最后更新于:2020-08-04 14:17
瓜皮猪

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: