本文主要介绍主题制作时会用到的循环(The Loop)的使用方法,以及在循环中使用的WordPress函数,解答上文《WordPress之主题制作》中参数的问题;同时会涉及到参数 $post,本文也会详细介绍这个参数。

官方文档介绍:https://developer.wordpress.org/themes/basics/the-loop/
https://developer.wordpress.org/reference/classes/wp_post/

简介

循环是WordPress用于通过主题模板文件输出帖子的默认机制。在循环中,WordPress检索要显示在当前页面上的每个帖子,并根据主题说明对其进行格式化。

循环可以应用于但不限于以下地方:

详细说明及用法介绍

基本用法

<?php 
if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        // 显示内容
    endwhile; 
endif; 
?>

上面就是循环的基本语句,将自己要显示的内容填写在上文注释部分即可。这段循环可以用在主页显示帖子标题和摘要上。

其中,利用 if 条件语句,先判断是否有帖子(have_posts()),再用 while 循环语句。注意:if 和 while 都需要结束语,if 对应的结束语是 endif,while 对应的是 endwhile。

循环中常见的模板标签

以上的函数需要在循环中,主要原因是因为它们需要设置全局变量 $post。所以只要能得到变量 $post ,即可调用上面的函数。所以在文章页(single)、页面(page),可以用下面的代码即可代替循环。

<?php if (have_posts()) : the_post(); ?>
    // 页面内容
    <?php the_content(); ?>
<?php endif; ?>

多个循环

在一个页面中,如果使用了循环,如果再次使用则会出错。例如在header.php中输出了文章标题,再在page.php中使用 <?php if (have_posts()) : the_post(); ?> 会出现错误,得到并非想要的内容。所以这时候就要使用多循环。

例如,您可能想要在页面顶部的目录列表中显示帖子的标题,然后在页面下方显示内容。由于查询没有被更改,因此当我们需要第二次遍历帖子时,我们只需要倒退循环。为此,我们将使用功能rewind_posts()

<?php
// 第一次循环
if ( have_posts() ) : 
    while ( have_posts() ) : the_post();
        the_title();
    endwhile;
endif;
 
// 使用rewind_posts()使第二次循环正常执行
rewind_posts();
 
// 第二次循环
while ( have_posts() ) : the_post();
    the_content();
endwhile;
?>

关于参数$post

下面是常用的 $post 的变量索引,更多内容可以查看WP_Post的详细说明:

上述参数可以根据大家需要修改主题文件,或者制作自己的主题。制作主题的教程可以到《WordPress之主题制作》一文去查看。


官方文档介绍:https://developer.wordpress.org/themes/basics/the-loop/
https://developer.wordpress.org/reference/classes/wp_post/
have_posts()、the_post()解析参考:https://www.cnblogs.com/drawblog/articles/8351327.html
$post参数参考:http://www.xuxiaoke.com/wpquestion/174.html

本文由 小TiD笔记 发布在小TiD笔记,转载此文请保持文章完整性,并请附上文章来源(小TiD笔记)及本页链接。

原文链接: https://www.tidnotes.ga/2019/11/wordpress-the-loop.html