循环是WordPress用于通过主题模板文件输出帖子的默认机制。检索多少帖子取决于“阅读”设置中定义的每页要显示的帖子数。在循环中,WordPress检索要显示在当前页面上的每个帖子,并根据您的主题说明对其进行格式化。
循环从WordPress数据库中提取每个帖子的数据,并在每个模板标签的位置插入适当的信息。The Loop中的所有HTML或PHP代码都将针对每个帖子进行处理。
简而言之,Loop的名称是真实的:循环遍历当前页面检索到的每条帖子,并执行主题中指定的操作。
您可以将Loop用于许多不同的事物,例如:
- 在博客的首页上显示帖子标题和节录;
- 在单个帖子上显示内容和评论;
- 使用模板标签在单个页面上显示内容;
- 显示“自定义帖子类型”和“自定义字段”中的数据。
您可以自定义模板文件中的“循环”以显示和操作不同的内容。
详细循环
基本循环是:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
此循环表明,有帖子时,循环浏览并显示帖子。细分为更多细节:
- 该have_posts()功能检查是否有任何帖子。
- 如果有帖子,则while只要括号中的条件在逻辑上为真,就会继续执行循环。只要have_posts()继续为真,循环就会继续。
使用循环
循环应放在中index.php,以及用于显示帖子信息的任何其他模板中。因为您不想一遍又一遍地复制标头,所以循环应始终放在调用之后get_header()。例如:
<?php
get_header();
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
在上面的示例中,循环的结尾显示为endwhile和endif。如上所述,循环必须始终以相同的ifandwhile语句开始,并且必须以相同的end语句结束。
您希望应用于所有帖子的任何模板标签都必须存在于开始和结束语句之间。
您可以包含自定义404“未找到”消息,如果没有符合指定条件的帖子可用,则会显示该消息。该消息必须放在endwhile和endif语句之间,如下面的示例所示。
一个非常简单的index.php
文件如下所示:
<?php
get_header();
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_content();
endwhile;
else :
_e( 'Sorry, no posts matched your criteria.', 'textdomain' );
endif;
get_sidebar();
get_footer();
?>
什么是循环可以显示
循环可以为每个帖子显示许多不同的元素。例如,许多主题中使用的一些常见模板标签是:
- next_post_link()–指向当前帖子之后按时间顺序发布的帖子的链接
- previous_post_link()–指向当前帖子之前按时间顺序发布的帖子的链接
- the_category() –与正在查看的帖子或页面相关的一个或多个类别
- the_author() –帖子或页面的作者
- the_content() –帖子或页面的主要内容
- the_excerpt()–帖子主要内容的前55个单词,后接省略号(…)或阅读全文的链接。您也可以使用帖子的“摘录”字段来自定义特定摘录的长度。
- the_ID() –帖子或页面的ID
- the_meta() –与帖子或页面关联的自定义字段
- the_shortlink() –使用网站的网址和帖子或页面的ID的页面或帖子的链接
- the_tags() –与帖子相关的一个或多个标签
- the_title() –帖子或页面的标题
- the_time()–帖子或页面的时间或日期。可以使用标准的php日期函数格式进行自定义。
您还可以使用条件标签,例如:
- is_home() –如果当前页面为主页,则返回true
- is_admin() –如果在管理屏幕中返回true,否则返回false
- is_single() –如果页面当前显示单个帖子,则返回true
- is_page() –如果页面当前仅显示单个页面,则返回true
- is_page_template() –可用于确定页面是否使用特定模板,例如: is_page_template(‘about-page.php’)
- is_category() –如果页面或帖子具有指定的类别,则返回true,例如: is_category(‘news’)
- is_tag() –如果页面或帖子具有指定的标签,则返回true
- is_author() –如果在作者的存档页面内,则返回true
- is_search() –如果当前页面是搜索结果页面,则返回true
- is_404() –如果当前页面不存在,则返回true
- has_excerpt() –如果帖子或页面有节选,则返回true