循环

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

通过本课程,你将能够:

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

循环如何在主题中使用?

这一切都源于使用主题的模板文件在页面中显示文章的需求。

例如,这里我们查看的是一个作品集主题的存档页面模板文件。循环从 WordPress 数据库中提取每篇文章的数据,并将相应的信息插入到每个模板标签的位置,例如文章的标题和摘要。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_excerpt(); ?>
<?php endwhile; endif; ?>

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

循环可以显示什么?

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

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

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

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

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

那么,让我们开始吧。

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

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

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

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

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php if ( has_excerpt() ) : ?>
        <?php the_excerpt(); ?>
    <?php endif; ?>
    <?php if ( get_post_meta( $post->ID, 'catmom_textarea', true ) ) : ?>
        <p><?php echo get_post_meta( $post->ID, 'catmom_textarea', true ); ?></p>
    <?php endif; ?>
    <?php the_post_thumbnail(); ?>
<?php endwhile; endif; ?>

因此,我们通过验证是否存在任何作品集文章来启动循环,如果存在,那么首先显示的是标题,并且使用 the_permalink() 模板标签使 the_title() 可点击,因此它是一个链接。

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

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

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

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

后续步骤

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