目录
大纲
WP建站和运维

循环

欢迎来到本节课,我们将深入探讨WordPress在页面上输出文章的机制。

通过本课,您将:

  • 描述循环在主题中的使用方式
  • 列举循环可以显示的一些示例
  • 探索如何显示自定义文章类型和自定义字段的数据

循环在主题中如何使用?

这一切始于使用主题模板文件在页面上显示文章的愿望。

例如,这里我们看到的是一个作品集主题存档页面的模板文件。循环从WordPress数据库中提取每篇文章的数据,并用适当的信息替换每个模板标签,例如文章的标题和摘要。

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

循环中的任何HTML或PHP代码都会针对每篇文章进行处理。简单来说,循环名副其实。它逐个遍历为当前页面检索到的每篇文章,并执行主题中指定的操作。

循环可以显示什么?

现在让我们看看循环可以显示的一些示例。

这里我们看到的是Twenty Seventeen主题的演示站点,这是一个经典主题,他们使用循环来显示博客文章。这是一个博客主页,对于每篇文章,我们看到元数据、文章标题、特色图片和摘要。

使用循环的其他示例包括在单篇文章上列出评论,以及从自定义文章类型和自定义字段中提取数据,这就是我们接下来要看的。

自定义文章类型和自定义字段

在我们的下一个示例中,我们将看一个具有自定义文章类型”portfolio”的作品集主题,我们将使用循环来显示作品集文章并包含一个自定义字段。

让我们开始吧。

这里我们看到的是作品集文章。每篇文章都有一个文章标题、项目简介和特色图片。

让我们在WordPress仪表板中查看其中一篇文章。

在这篇文章中,右侧我们看到技能和工具的分类,底部我们看到项目简介自定义字段。

现在让我们看看这是如何完成的。

<?php
if ( have_posts() ) : 
    while ( have_posts() ) : the_post();?>
        <div class="cm-post-list mb-5">
            <a href="<?php the_permalink(); ?>"><h2><?php the_title(); ?></h2></a>
            <?php
            if ( ! has_excerpt() ) {
                echo '';
            } else { 
                the_excerpt();
            }?>
            <?php $project_info = get_post_meta( get_the_ID(), 'catmom_textarea', true );
            if ( $project_info ): ?>
            <p class="project-meta"><?php echo $project_info; ?></p>
            <?php endif;?>

            <?php the_post_thumbnail();?>
        </div><?php
    endwhile;
else :
    // 当没有找到文章时,输出此文本。
    _e( '抱歉,没有符合您条件的文章。' );
endif;
wp_reset_postdata(); ?>

我们通过验证是否有任何作品集文章来开始循环,如果有,那么首先显示的是标题,使用the_permalink()模板标签,我们使the_title()可点击,所以它是一个链接。

接下来我们有一个if语句,它验证我们是否有摘要。模板标签the_excerpt()用于显示摘要。

接下来是自定义字段,名为catmom_textarea。我们稍后会看看这是如何完成的,但这里的if语句验证项目信息是否存在。如果该字段中有数据,它将在这里显示。

最后在底部,我们看到使用the_post_thumbnail()模板标签来显示文章的特色图片。

创建了一个插件来创建自定义字段,它实际上特别被称为元框。这个元框是项目简介,你可以在这里看到使用ID,我们有catmom_textarea字段,我们在刚刚查看的PHP代码中引用了它。

下一步

要了解更多关于循环的信息,请参考WordPress.org上提供的主题手册。