當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>掌握 WP_Meta_Query 和 WP_Date_Query

掌握 WP_Meta_Query 和 WP_Date_Query

歡迎來到該系類的最后一個部分 —— 好吧,你猜對了,技術(shù)上來說最后一個部分應(yīng)該是“系列結(jié)尾”。在這個部分,我們來學(xué)習(xí)同級類 WP_Meta_QueryWP_Date_Query

廢話少說,讓我們開始吧!

注:由于時間精力有限,本教程沒辦法翻譯分享,希望朋友們可以加入我們,幫助我們進行翻譯,有小酬謝,有意者請聯(lián)系倡萌QQ 745722006(注明:教程翻譯)。

以下為原文:http://code.tutsplus.com/tutorials/mastering-wp_meta_query-wp_date_query–cms-23352

Welcome to the final part of the series—well, technically the final part will be “Series Finale”, but you get the idea. In this part, you’re going to learn about two sibling classes called WP_Meta_Query and WP_Date_Query.

Without further ado, let’s begin!

Working With All Kinds of Meta Data Through the WP_Meta_Query Class

The WP_Meta_Query class is a “helper class”, helping WP_Query to make queries with meta data.

As you know, WordPress stores three kinds of meta data in the database: post meta, user meta and comment meta. We saw in the previous tutorials that we can run meta queries within the queries that we make with the WP_Query, WP_User_Query and WP_Comment_Query classes (with the 'meta_query' parameter). TheWP_Meta_Query is actually running when you do those queries.

Turns out, you can get the SQLs for these meta-related queries with the help of the WP_Meta_Query class. This class doesn’t really get the results of the given query, but instead prepares the SQL commands for you to use somewhere else.

Example Use of the WP_Meta_Query Class

We can’t say it’s a tutorial if we don’t do an example, right? With a simple example, we’re going to see how we can use the WP_Meta_Query class in real life. (Granted, it’s an extremely specific thing to get the SQL code for a meta-related query, but I will try to come up with a real-world example.)

Let’s imagine that you want to make a special “related posts plugin” for your own website, where you will list posts which have the same meta value for a meta key—or another meta value for another meta key. And instead of making a meta query within a WP_Query instance, you want to get the SQL code of the query to use it dynamically in separate code blocks. Here are the steps to prepare that SQL code:

<?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' );
 
?>

There you go: The $my_meta_sql variable stores the SQL code for your special query, and you can use this SQL code anywhere you like within your project.

Wrangling Date Queries With the WP_Date_Query Class

Just like WP_Meta_Query, the WP_Date_Query is a helper class for the WP_Query, WP_User_Query and WP_Comment_Queryclasses. This helper class was introduced in WordPress version 3.7. Back then, the class didn’t supportWP_User_Query, but since the 4.1 version, you can query inside the users table (the user_registered column specifically).

Similar to WP_Meta_Query and its ability to query meta keys and values, the WP_Date_Query class allows us to query date fields inside the posts, comments and users tables. And exactly like WP_Meta_Query, this helper class also lets you return the prepared SQL code to run a date-related query.

Example Use of the WP_Date_Query Class

In order to fully understand how the WP_Date_Query class works, let’s go through an example with it. It’s going to be yet another unnecessarily specific example, but it wouldn’t feel right to leave this part without an example.

Let’s imagine that, for some reason, we need to query for comments that are made in the current month and before noon. (Please shoot me a comment if you find a good case to fetch comments made in the current month and before noon!) Here’s how to get the SQL code for this bizarre query:

<?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();
 
?>

There you go. Keep in mind that you can use PHP relative date formats, which are really useful.

Quick tip: Christian Bruckner has a great post on MarketPress.com about how WP_Date_Query works. It’s a little bit outdated (because it was written before WordPress 4.1 was released) but it’s very well-written and still a good read. Be sure to check it out.

Wrapping Everything Up

With these two helper classes, we’re ending the long journey of dissecting the WP_Query class. This was one of the longest tutorial series in the history of Tuts+, so thank you for bearing with us till the end! In the next (and last) part, we’re going to recap what we went through for the last time and close the series.

Do you have anything to add to this article? If so, don’t hesitate to share your thoughts in the Comments section below. And if you liked the article, don’t forget to share it with your friends!

您已閱讀完《掌握 WP_Query(共19篇)》專題的第 17 篇。請繼續(xù)閱讀該專題下面的文章:

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress開發(fā)

掌握 WP_Comment_Query

2016-5-9 7:56:00

WordPress開發(fā)

WordPress 4.1的查詢改進

2016-5-10 8:11:00

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

新余市| 含山县| 南雄市| 邓州市| 杂多县| 揭西县| 桂阳县| 加查县| 石家庄市| 灵武市| 翁牛特旗| 永新县| 綦江县| 弥渡县| 志丹县| 自治县| 旬阳县| 昭平县| 广安市| 弥渡县| 卫辉市| 峡江县| 隆尧县| 灵寿县| 库车县| 三原县| 陇川县| 金门县| 永康市| 固原市| 新安县| 江山市| 和田市| 永修县| 长白| 华阴市| 淮北市| 遵化市| 岳阳县| 昆山市| 泾源县|