2017-01-23 49 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

相关问题