【问题标题】:Advanced Custom Fields Order By Meta Key value高级自定义字段按元键值排序
【发布时间】:2017-06-08 08:35:02
【问题描述】:

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

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

我需要他们按照我命名为“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 ): ?>

【问题讨论】:

    标签: php wordpress get advanced-custom-fields posts


    【解决方案1】:

    您需要通过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

    【讨论】:

    • 非常感谢内森 - 这非常有效。解释也很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2013-05-05
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多