WordPress Meta_Query:你需要知道的一切

已發表: 2022-04-30

WordPress 中最強大的工具之一是能夠向帖子添加自定義字段。 許多開發人員使用高級自定義字段或自定義元字段來發布帖子。

在這篇文章中,我們將討論如何使用 WordPress 中的 meta_query 函數通過自定義字段查詢帖子。 這對於具有大量自定義功能的站點很有幫助。


按元值查詢帖子

使用自定義字段查詢帖子的最流行方法可能是針對一個特定的元值。 例如,假設我們有一個網站,其中的帖子有一個自定義字段,用於確定帖子是否是“精選”。 這在 WordPress 網站上製作特色部分時很常見。

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

當然,上面的代碼會根據您對字段和元鍵的標題而有所不同,但“鍵”是自定義字段的名稱,而“值”是我們查詢帖子的內容。 “比較”字段用於一系列比較操作,我們將在後面的文章中介紹。

在 WP_Query 中使用它可以讓我們獲得一個非常適合循環函數顯示帖子的數組。 在這篇文章中,我們將只討論 meta_query 函數,而不是如何顯示 WP_Query 輸出。


通過多個元值查詢帖子

如果您想根據多個值檢查元鍵值,最好使用“IN”運算符。

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

通過多個元鍵查詢帖子

現在我們已經使用單個元鍵查詢了帖子,讓我們來查詢多個字段/鍵。 這將允許您根據多個自定義字段查詢帖子。 這個例子結合了我們上面所做的兩件事,將查詢嵌套到一個數組中,並向 meta_query 添加一個“關係”。

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

“關係”字段可以設置為“與”或“或”,因此您可以要求滿足所有條件或僅滿足一個條件。


元查詢比較運算符

有一些運算符有助於通過元查詢查詢您的帖子。 以下是每個比較運算符的快速細分以及如何使用它們。

  • '='查詢等於元值的元鍵
  • '!='查詢不等於元值的元鍵
  • '>'查詢大於元值的元鍵
  • '>='查詢大於 & 等於元值的元鍵
  • '<'查詢小於元值的元鍵
  • '<='查詢小於 & 等於元值的元鍵
  • 'LIKE'查詢包含單詞/短語的元鍵(例如查詢“red”將匹配短語“Red”、“looksred”和“redstyle”)
  • '不喜歡'與上述相反
  • 'IN'查詢值存在於數組中的元鍵
  • 'NOT IN'查詢值不存在於數組中的元鍵
  • 'BETWEEN'查詢值在兩個數字之間的元鍵
  • 'NOT BETWEEN'查詢值不在兩個數字之間的元鍵
  • 'EXISTS'查詢值存在的元鍵
  • 'NOT EXISTS'查詢值根本不存在的元鍵
  • 'REGEXP'基於正則表達式查詢元鍵
  • 'NOT REGEXP'與上述 REGEXP 相反

如何按元字段對帖子進行排序

當然,WordPress 允許您使用 WP_Query 中的“orderby”選項使用自定義字段對帖子進行排序。 您需要將“orderby”設置為“meta_value”,然後將“meta_key”值設置為您的字段名稱。 默認情況下,當您的字段是數字時,當您希望查詢按字母順序返回或按數字排序時,這是最有用的。

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub