在过去的一年中,关于WordPress用户界面改进的文章很多:最受关注的变化是改进的书写体验。
但是,如果您是一名开发人员,那么您将不希望对此有所了解,而希望对幕后的变化有更多的了解。 在这里,我将向开发者展示最有趣的变化之一:对某些类型的查询的改进。
主要变化如下:
- 已添加对嵌套查询的支持,以支持有关帖子元数据,日期和分类术语的查询。
- 添加了用于查询注释的额外参数。
- 并且一些错误也已修复!
让我们看一下这些变化。
嵌套查询
在早期版本的WordPress中,您可以使用AND
或OR
语句来定义对分类术语,日期和元数据的查询。 因此,例如,在输出快速早餐食谱的食谱站点上的查询中将使用以下参数:
<?php
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'speed',
'field' => 'slug',
'terms' => array( 'quick' )
),
array(
'taxonomy' => 'meal',
'field' => 'slug',
'terms' => array( 'breakfast' )
)
)
);
$query = new WP_Query( $args );
?>
这将查找'speed'
和'meal'
分类法,并分别输出带有'quick'
和'breakfast'
术语的帖子。
但是,如果您想编写一个更复杂的查询该怎么办? 假设您想要早餐的快速食谱和午餐的慢食谱(也许对于想要快速完成早餐的人,以便他们有更多时间烹饪午餐!)。 您不想使用简单的AND
语句来连接查询的所有元素,例如,因为那样的话,您会得到慢速的早餐和午餐食谱。 而且,您不希望使用OR
语句链接所有术语,因为您将获得所有食谱的所有方式,这些食谱仅包含一个查询的术语以及要过滤的其他术语。
好消息是,现在您可以执行此操作。 要查询早餐的快速配方和午餐的慢速配方,请使用以下命令:
<?php
$query = new WP_Query(
array(
'tax_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'taxonomy' => 'meal',
'field' => 'slug',
'terms' => array( 'breakfast' )
),
array(
'taxonomy' => 'speed',
'field' => 'slug',
'terms' => array( 'quick' )
)
),
array(
'relation' => 'AND',
array(
'taxonomy' => 'meal',
'field' => 'slug',
'terms' => array( 'lunch' )
),
array(
'taxonomy' => 'speed',
'field' => 'slug',
'terms' => array( 'slow' )
)
)
)
)
);
$query = new WP_Query( $args );
?>
在这里,我使用了两个嵌套数组:
- 外部数组使用
OR
,因为我们正在寻找快速早餐食谱或慢午餐食谱的帖子。 - 第一个嵌套数组使用
AND
查找属于快速早餐食谱的帖子AND
因为您希望帖子同时具有这两个术语。 - 第二个嵌套数组再次使用
AND
查找慢午餐食谱。
当然,您可以更改查询以包含多个分类术语和值,并根据需要进行复杂处理。
应用嵌套查询:分类术语,元数据和日期
我上面给出的示例使用分类法术语,但是此功能也已添加到日期和元数据查询中。 元数据可能会使事情变得有趣,因为您拥有这么多值的范围。
日期和元数据查询的语法完全相同。 对于元查询替换tax_query
与meta_query
和使用'key'
和'value'
作为参数。 对于日期查询您更换tax_query
与date_query
和使用日期参数在WordPress的法典规定。
注释参数
要查询注释,请使用WP_Comment_Query
类代替更常用的WP_Query
类。 此类已添加了八个新参数:
-
'author__in'
:标识评论作者(或作者数组) -
'author__not_in'
:标识不是由某个作者(或作者数组)提供的评论 -
'post_author__in'
:标识发表评论的帖子的作者(或作者数组) -
'post_author__not_in'
:排除对特定作者或作者群撰写的帖子的评论 -
'comment__in'
:具有特定ID或ID数组的注释 -
'comment__not_in'
:排除具有特定ID或ID数组的注释 -
'post__in'
:对帖子或帖子数组(使用帖子ID)的评论 -
'post__not_in'
:排除对帖子或帖子数组(使用帖子ID)的评论
用于这些值的是适当的作者ID,评论ID或帖子ID。
请注意, WP_Comment_Query
类现在也支持嵌套查询。
Bug修复
还修复了一些错误,可能会有所帮助:
- 修复了将
date_query
与tax_query
或meta_query
一起使用时,导致查询失败的错误。 - 当
'orderby' => 'meta_value'
传递一个当使用'meta_query'
与OR
关系在WP_Query
,这用于打破该查询。 此问题已解决。
如果您想了解所有详细信息,可以在make WordPress核心网站上找到。
摘要
这些对查询的改进使WordPress进一步迈向了全面CMS功能。 使用嵌套查询的功能意味着您可以以更加灵活和复杂的方式输出内容。 看看人们如何使用它们会很有趣!