使用 WP_Query 在 WordPress 中执行查询
已发表: 2023-02-12为您的 WordPress 网站提供数据的数据库充满了有价值的信息。 这就是可以通过许多不同变量过滤您的帖子和页面的原因。 但是,如果您要显示的内容不是主题的一部分,则还有其他使用该数据的方法。
这就是 WP_Query 的用武之地。这是一个使用各种参数的 PHP 类。 因此,它使您能够从 WordPress 数据库中提取数据以供使用或显示在您的网站上。
在本文中,我们将更深入地了解 WP_Query 类及其使用方法。 我们还将引导您完成使用它时要遵循的一些重要步骤。 如果你准备好了,让我们开始吧!
什么是 WP_Query?
正如我们提到的,WP_Query 是 WordPress 数据库使用的 PHP 类。 这个特定的类可以做几件事,但主要用于从数据库中提取帖子。
顾名思义,它会根据您为其设置的条件进行查询。 由于在 WordPress 中有很多参数可以与 WP_Query 一起使用,因此您可以以多种独特的方式提取和显示帖子。 我们将在本文后面更详细地探讨这些选项。
如何使用 WP_Query
即使您只是学习 WordPress 代码库的各个方面,WP_Query 也是一个很好的入门课程。 现在,让我们分解四种在您的网站上使用它的不同方式。
1. 从自定义循环开始
了解 WP_Query 调用的最佳方法之一是通过 WordPress 循环。 如果您不熟悉 Loop 是什么,这是一个需要继续阅读的重要概念。
Loop 调用数据库请求发布内容,并显示返回的数据。 它还根据设置的参数运行,例如您希望站点在单个页面上显示多少帖子(您可以在“设置”>“阅读”菜单中配置)。
Loop 的基本原理如下所示:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
这个简单的语句本质上是说如果有帖子,就应该显示它们。 当然,您可以在此基础上添加各种各样的模板标签,以创建您想要的显示。
您还可以将 WP_Query 插入到循环中。 这使您能够将参数放置在将返回的帖子上。 让我们分解一下它的样子:
<?php
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
您会看到与基本循环相同的if/while语句,但还有一个额外的 WP_Query 字符串。 此处设置的任何参数都将决定将显示哪些帖子。
例如,如果您想从帖子列表中排除某个作者,您可以在循环中使用 WP_Query 执行此操作:
$query = new WP_Query( array( 'author' => -12 ) );
通过将其放置在循环中,您显示的帖子将不再包含作者编号为“12”的用户。
您可以使用此方法的参数数量几乎是无穷无尽的。 您可以包括类别信息以及高级分类法,仅举两个示例。
2. 参数:WordPress 中自定义查询的主干
在前面的示例中,您可能已经注意到“($args)”作为字符串的一部分。 这是引用包含的“参数”的查询的重要部分。 它准确地告诉数据库要在返回的数据中包含什么。
本质上,可以设置这些参数以确定您要显示的确切结果。 参数也可用于更改变量的值。 例如,如果您想更改类别列表在页面上的显示方式,您可以使用参数。
您的论点将定义一组变量和值。 因此,如果您愿意,可以使用一个参数来定义一个数组,并告诉您的数据库以降序显示类别。 此外,您可以使用相同的方法排除任何不包含帖子的类别。
3. WP_Query 中的参数:类别、标签等
到目前为止,我们只是顺便提到了参数。 在这一点上,让我们仔细看看他们实际上能做什么。 它们的主要功能是使您能够提取定制设计的帖子集合。
可以在站点标头中使用的参数示例之一是类别参数。 您可以使用它来指定特定的显示类别。 这是通过提供相关的类别编号或 slug 来完成的。
此外,您可以使用 Tag 参数执行相同的操作。 当然,Category 和 Tag 参数实际上只是使用 WP_Query 时的冰山一角。
4. 用方法和属性修改对象
虽然不建议直接更改 WP_Query 等类的属性,但您可以使用方法与它们进行交互。 本质上,方法就像函数,而属性相当于变量。
WP_Query 有很多属性。 这些范围从简单的“$posts”属性到更复杂的属性。 无论使用何种方法与它们交互,数据都将根据您选择放置的参数返回。
WP_Query 与 WordPress 中的 query_posts()
值得注意的是,还有另一种方法可以修改页面上的主查询。 这是 query_posts() 函数。 虽然这可以以类似于 WP_Query 的方式工作,但它也可能存在很大问题。
WordPress 代码参考甚至强烈建议您不要在网站的主循环中使用此功能。 最好在插件和主题中避免使用它。 这是因为它将完全覆盖您的主要查询。
WP_Query 类是首选,因为您还可以在运行查询后“重置”主循环。 由于 WP_Query 允许您在循环中运行多个查询,因此您还需要了解如何实现 wp_reset_postdata 函数。
如果您在主 WordPress 循环中嵌入了一个辅助循环,则重置函数将放在末尾,如下所示:
<?php wp_reset_postdata(); ?>
这将恢复默认模板标签,您将回到启动辅助循环之前的状态。
使用 WP Engine 自定义您的 WordPress 网站
能够调整项目在您网站上的显示方式只是使用 WordPress 的好处之一。 了解 WP_Query 并利用开发人员资源页面上提供的工具可以帮助您构建真正定制的网站。
在 WP Engine,我们热衷于确保您拥有构建引人入胜的网站所需的资源。 立即查看我们的 WordPress 解决方案和托管计划!