2017-01-23 51 views
0

我有我列出自定義後的結果類型簡單的WordPress的查詢。先進的自定義字段順序按META鍵的值

目前,他們列出的帖子被創建日期的順序。

我需要他們到列表按自定義字段的順序我已將最近到最早的名稱命名爲'release_year'

我有合併了第二次查詢到我的結果麻煩。

如何確保所有帖子都按release_year排序?

任何幫助表示讚賞。

<?php 
    $posts = get_posts(array(
    'post_type'   => 'discography', 
    'posts_per_page'  => -1, 
    'meta_key'   => 'release_category', 
    'meta_value'   => 'album', 
    'orderby'    => 'meta_value', 
    'order'    => 'ASC', 
));    
if($posts): ?> 

回答

3

您需要通過release_year但是你指定release_category作爲Meta鍵,因此它沒有辦法知道你要使用的其他關鍵,而不是方式訂購。

你面對的主要問題是你不能有兩個meta_key參數。相反,您需要使用meta_query參數。

$posts = get_posts(array(
    'post_type'   => 'discography', 
    'posts_per_page'  => -1, 
    'meta_key'   => 'release_year', 
    'orderby'    => 'meta_value_num', 
    'order'    => 'DESC', 
    'meta_query'   => array(
     array(
      'key' => 'release_category', 
      'value' => 'album', 
     ), 
    ), 
)); 

元查詢用於設置釋放類別和meta_key值更改爲您希望通過訂購的關鍵。我還設置了meta_value_num,這在處理數值時很重要。最後你需要使用降序。

延伸閱讀:https://codex.wordpress.org/Class_Reference/WP_Meta_Query

https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

+0

非常感謝內森 - 這個完美工作。解釋也很好。 – lowercase

相關問題