WordPress 循环:它是什么以及您需要了解什么

已发表: 2023-10-25

如果您是 WordPress 主题开发人员、程序员,或者只是一个渴望了解 WordPress 循环是什么的整体爱好者,那么这篇文章适合您! 话不多说,让我们从基础知识开始:什么是循环?

WordPress 循环是一段 PHP 代码,用于显示 WordPress 帖子,或者简单地说; 它用于各种主题中以在任何给定网页上显示帖子。 它不仅可以在您看到的大多数页面上运行,而且还允许您根据自己的喜好对其进行修改和自定义。

这些网站循环可用于按评论数列出帖子、显示带有图像的帖子等。

当您查看循环时,您可以看到一些函数默认运行以显示帖子。 主题开发人员可以使用这些函数和模板标签来自定义循环中每个帖子的显示方式。

这些模板标签仅在 WordPress 默认循环内工作,用于格式化、排列和发布帖子数据。

WordPress 循环无疑是 WordPress 代码中最关键的部分,让我们深入了解您的网站如何循环。

适合初学者的 WordPress 页面循环

正如我们已经提到的,post 循环是一个输出 WordPress 拥有的有关一个或多个帖子的所有信息的代码。 它在后台运行每篇帖子,并逐一查找数据库,从而提供有关所有找到的帖子的信息。

以下是 WordPress 循环帖子工作原理的示例:

  1. 你开始循环,
  2. 对每个找到的帖子或页面采取行动,
  3. 关闭循环。

这三个步骤代表了循环背后的基本逻辑。 从此时起,您可以发挥创意并使用查询过滤找到的帖子。 查询告诉循环我们正在寻找什么。 在我们的示例中,它看起来像这样:

  1. 定义我们正在寻找什么,
  2. 开始循环,
  3. 对每个找到的帖子或页面采取行动,
  4. 关闭循环。

如果您有使用 PHP 代码的经验,您可能熟悉“while”函数,该函数在循环中使用来运行数据库查询并动态显示信息,而无需手动输入每个数据库行。

WordPress while 循环的工作方式相同。

标准 WordPress 循环示例

以下是可在任何页面上使用的标准 WordPress 循环示例。

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
// Post display here
<?php endwhile ?>
<?php else : ?>
// Content if there are no posts to show
<?php endif ?>

看一下have_posts()the_post()函数。 第一个确定是否有任何帖子要显示,第二个设置数据和内部指针,这有助于has_posts()函数。

如果没有任何内容可显示,则该函数应显示一条消息通知用户。

如果有我们要查找的帖子,那么循环会一一显示它们。

在这里,有一段可以实际显示帖子的代码,它由我们承担!

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
<div <?php post_class() ?>>
<h2><a href='<?php the_permalink() ?>'><?php the_title() ?></a></h2>
<div class='post-excerpt'>
<?php the_excerpt() ?>
</div>
<div class='post-meta'>
<time><?php the_time( 'Ymd' ) ?></time>
<?php if ( has_category() ) : ?>
<span class='post-categories'><?php the_category( ', ' ) ?></span>
<?php endif ?>
</div>
</div>
<?php endwhile ?>
<?php else : ?>
<h2>There are no posts here</h2>
<p>Do you want to go back to the <a href='<?php echo site_url() ?>'>home page?
<?php endif ?>

这里显示的内容是由我们已经讨论过的查询决定的,而内容的显示方式取决于循环。 如此大量的定制是非常棒的,这也是 WordPress 脱颖而出的原因。

做得好! 现在你知道什么是后循环了!

使用代码更改主查询

在开始之前,我们必须警告您,如果您不知道自己在做什么,则更改主查询可能会产生意想不到的后果。 实验时要小心!

如果我们想修改核心功能,我们就必须查看钩子。 这些钩子使我们能够更改文本长度、更改登录屏幕、重新措辞错误消息、更改自定义帖子类型等等。

add_action( 'pre_get_posts', 'my_exclude_category' );
function my_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-92' );
}
}

请注意,我们在主查询运行之前使用pre_get_post挂钩来修改主查询的参数。 上面的代码与之前的代码执行相同的操作,但这次它从我们的主页中排除了类别 92。 因此,修改主查询

看一下is_home()is_main_query()函数。 他们在这里确保查询仅在主页上修改,并且它是主查询。

这是另一个在 WordPress 博客循环中有用的代码。

假设您网站上的一位作者抄袭了他或她的部分(或全部)内容,并且您希望永久删除他或她的所有帖子,或者直到问题解决为止。

这可以通过添加如下代码来完成:

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
$query->set( 'author', '-23' );
}

使用此条件函数,您可以从您的网站和后端删除作者的帖子。 您可以在 WordPress Codex 中找到所有条件标签。 最后的代码最终应该是这样的:

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
if( !is_admin() ) {
$query->set( 'author', '-23' );
}
}

WordPress 循环常见问题解答

WordPress 循环到底是什么?

天哪,这让我回来了! 因此,从本质上讲, WordPress 循环是 WP 的引擎,用于在站点上显示数据库中的内容。

它是许多 WP 模板的核心,告诉系统要显示哪些帖子或页面以及以什么顺序。 将其视为 WordPress 派对的 DJ,为您的客人挑选合适的曲调(或帖子)。

为什么循环在主题开发中如此重要?

啊,主题开发,每次都是一个有趣的谜题! 循环就像 WordPress 主题的主干。 没有它,你的主题将是一部没有情节的无声电影。

它根据WP_Query参数获取内容,并通过模板标签,您可以自定义内容的显示内容和方式。 听说过某些帖子具有特殊风格的主题吗? 是的,这就是循环的魔力。

WP_Query 与循环有何关系?

好吧,跟我一起潜入这里吧。 WP_Query是定义和获取内容的类。 然后循环遍历 WP_Query 返回的结果。

将 WP_Query 视为准备菜肴的厨师,而循环则将菜肴提供给客人。 通过自定义帖子类型和分类法,这位厨师可以烹制出一系列令人印象深刻的菜肴!

have_posts() 和 the_post() 有什么区别?

经典问题! have_posts()检查查询中是否还有要循环的帖子。 这就像在问:“嘿,该播放列表上还有其他歌曲吗?”

同时, the_post()设置当前帖子,以便您准备好显示其详细信息。 这类似于播放下一首曲目。 两者在循环舞蹈中都非常重要。

如何自定义循环中显示的帖子?

啊,定制的力量! 要更改显示的帖子,您可以调整WP_Query参数或使用pre_get_posts过滤器。

无论是类别循环标签循环还是任何其他自定义查询,您都可以做很多事情。 想要显示某个类别的帖子? 或者可以按自定义字段对它们进行排序? 世界是你的牡蛎!

一页中可以有多个循环吗?

完全正确! 多个循环是一回事,特别是当您想要不同的部分时,例如主文章列表,后面是包含最近帖子的侧边栏。

您只需要在每个自定义WP_Query之后使用wp_reset_postdata()重置循环。 有了模板部件,它就更有条理了。 请记住不要做得太过分——没有人喜欢杂乱的聚会!

循环上下文中的条件标签是什么?

因此,条件标签是循环的看门人。 它们可以让您控制某些内容的显示位置和时间。

您可以使用它们仅在单个帖子上或仅在特定分类中显示一段内容。 他们就像 WP 俱乐部的保镖,根据宾客名单决定谁可以进入。

如何向循环添加分页?

啊,分页,不让访问者不知所措的艺术! 通过使用分页功能,您可以将帖子分成多个页面。

不要显示无休止的帖子列表,而是让您的用户喘口气。 像paginate_links()这样的函数或经典的“下一个和上一个”链接在这里会有所帮助。 因为,说实话,没有人愿意永远滚动。

为什么我需要修改主查询?

好一个! 有时,默认设置并不能解决问题。 也许您希望主页仅显示特定的自定义帖子类型或排除某些类别。

通过使用pre_get_posts操作,您可以调整主查询,而无需编写新查询。 这就像调整立体声音响的主要设置以获得完美的声音一样。

如果我的循环出现问题会怎样?

噢,去过那里! 如果循环出现问题,您的网站可能不会显示任何内容,甚至更糟糕的是,会抛出错误。 修补之前务必进行备份。 检查您的WP_Query参数和模板层次结构

如果一切都失败了, WordPress Codex和社区论坛就是排除故障的金矿。 请记住,每个开发人员都至少面临一次故障循环。 你得到了这个!

关于 WordPress 循环的结束想法

使用 WordPress 循环是自定义您的帖子、页面或简单地说 - 您的网站的好方法。 该循环要求您对 WordPress 的工作原理和代码逻辑有基本的了解。

除非您想进行快速测试,否则我们不建议使用 query_posts() 函数。 如果需要修改原始查询,您可以使用各种挂钩。 更改 WordPress 循环代码时请务必小心。

我们希望这篇文章是您掌握 WordPress 循环的良好开端!

如果您喜欢这篇关于 WordPress 循环的文章,您还应该阅读以下内容:

  • WordPress 中的 504 错误:如何修复
  • 创建成功的 WordPress 高级插件或主题的 12 个技巧
  • 如何在 WordPress 中利用浏览器缓存? 遵循的步骤