高级自定义字段按元键值排序

Advanced Custom Fields Order By Meta Key value

我有一个简单的 Wordpress 查询,其中列出了我的自定义 post 类型结果。

目前,他们按 post 创建日期的顺序列出。

我需要它们按照我命名的自定义字段的顺序列出 'release_year' 从最近到最旧。

我无法将第二个查询合并到我的结果中。

如何确保所有 post 都按 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 ): ?>

您需要按 release_year 排序,但是您将 release_category 指定为元键,因此它无法知道您想要使用另一个键。

您面临的主要问题是您不能有两个 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