欢迎来到该系列的最后一部分-技术上,最后一部分将是“系列结局”,但是您明白了。 在这一部分中,您将学习称为WP_Meta_Query
和WP_Date_Query
两个兄弟类。
事不宜迟,让我们开始吧!
通过WP_Meta_Query类处理各种元数据
WP_Meta_Query
类是“帮助程序类”,可帮助WP_Query
使用元数据进行查询。
如您所知,WordPress在数据库中存储了三种元数据:发布元,用户元和评论元。 在之前的教程中,我们看到可以在使用WP_Query
, WP_User_Query
和WP_Comment_Query
类(带有'meta_query'
参数)进行的查询中运行元查询。 进行这些查询时, WP_Meta_Query
实际上正在运行。
事实证明,您可以借助WP_Meta_Query
类获得这些与元相关的查询的SQL。 此类实际上并没有获得给定查询的结果,而是准备了SQL命令供您在其他地方使用。
WP_Meta_Query类的使用示例
如果不做示例,就不能说这是教程,对吧? 通过一个简单的示例,我们将看到如何在现实生活中使用WP_Meta_Query
类。 (当然,获取与元相关的查询的SQL代码是非常具体的事情,但是我将尝试提出一个真实的示例。)
假设您要为自己的网站制作一个特殊的“相关帖子插件”,您将在其中列出对一个元键具有相同元值或对另一个元键具有另一个元值的帖子。 而且,您不是要在WP_Query
实例中进行元查询,而是要获取查询的SQL代码以在单独的代码块中动态使用它。 以下是准备该SQL代码的步骤:
<?php
global $wpdb;
$my_meta_query_args = array(
'relation' => 'OR',
array(
'meta_key' => 'Some_Key',
'meta_value' => 'Some_Value',
'compare' => '='
),
array(
'meta_key' => 'Some_Other_Key',
'meta_value' => 'Some_Other_Value',
'compare' => '='
)
);
$my_meta_query = new WP_Meta_Query;
$my_meta_query->parse_query_vars( $my_meta_query_args );
$my_meta_query_sql = $my_meta_query->get_sql( 'post', $wpdb->posts, 'ID' );
?>
您可以执行以下操作: $my_meta_sql
变量存储特殊查询的SQL代码,并且您可以在项目中的任何位置使用此SQL代码。
使用WP_Date_Query类进行日期查询
就像WP_Meta_Query
一样, WP_Date_Query
是WP_Query
, WP_User_Query
和WP_Comment_Query
类的帮助WP_Comment_Query
类。 WordPress 3.7版中引入了此帮助器类。 那时,该类不支持WP_User_Query
,但是从4.1版本开始,您可以在users表(特别是user_registered
列)中进行查询。
与WP_Meta_Query
及其查询元键和值的功能类似, WP_Date_Query
类使我们可以查询帖子,评论和用户表中的日期字段。 就像WP_Meta_Query
一样,此帮助器类还允许您返回准备的SQL代码以运行与日期相关的查询。
WP_Date_Query类的使用示例
为了完全理解WP_Date_Query
类的工作方式,我们WP_Date_Query
一个示例。 这将是又一个不必要的特定示例,但是如果没有示例,将这部分留在原地是不合适的。
假设由于某种原因,我们需要查询当月和中午之前发表的评论。 (如果找到合适的案例来获取当月和中午之前发表的评论, 请给我留言。)以下是获取此奇怪查询的SQL代码的方法:
<?php
$my_date_query_args = array(
array(
'month' => date( 'n' ),
),
array(
'before' => 'noon'
),
'relation' => 'AND'
);
$my_date_query = new WP_Date_Query( $my_date_query_args, 'comment_date' );
$my_date_query_sql = $my_date_query->get_sql();
?>
你去。 请记住,您可以使用PHP相对日期格式 ,这确实有用。
快速提示:克里斯汀·布鲁克纳(Christian Bruckner) 在MarketPress.com上 有一篇 不错的文章, 介绍了 WP_Date_Query
工作方式。 它有点过时了(因为它是在WordPress 4.1发行之前编写的),但是它写得很好,仍然很不错。 请务必检查一下。
包装一切
通过这两个帮助器类,我们结束了剖析WP_Query
类的漫长旅程。 这是Tuts +历史上最长的教程系列之一,因此,感谢您与我们保持紧密联系! 在下一部分(也是最后一部分)中,我们将回顾上一次的操作并结束本系列。
您对本文有什么要补充的吗? 如果是这样,请不要在下面的评论部分中分享您的想法。 而且,如果您喜欢这篇文章,请不要忘记与您的朋友分享!
翻译自: https://code.tutsplus.com/tutorials/mastering-wp_meta_query-wp_date_query--cms-23352