掌握WP_Meta_Query和WP_Date_Query

欢迎来到该系列的最后一部分-技术上,最后一部分将是“系列结局”,但是您明白了。 在这一部分中,您将学习称为WP_Meta_QueryWP_Date_Query两个兄弟类。

事不宜迟,让我们开始吧!

通过WP_Meta_Query类处理各种元数据

WP_Meta_Query类是“帮助程序类”,可帮助WP_Query使用元数据进行查询。

如您所知,WordPress在数据库中存储了三种元数据:发布元,用户元和评论元。 在之前的教程中,我们看到可以在使用WP_QueryWP_User_QueryWP_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_QueryWP_QueryWP_User_QueryWP_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值