【问题标题】:Ordering by multiple ACF fields按多个 ACF 字段排序
【发布时间】:2016-02-22 05:29:29
【问题描述】:

我看到了一些与此类似的问题,但我仍然无法正常工作,所以我想问一下。

我有一个名为“课程”的自定义帖子类型。此 CPT 有一个名为“日期”的自定义字段,它可以是过去、未来或未设置 (null)。

我正在尝试编写一个隐藏过去课程的查询,然后显示未来的课程(按日期排序,最早在前),然后显示未设置日期的课程(占位符课程)。

我的计划是在课程 CPT 中添加一个“placeholder_course”字段,并且只有将其设置为 false 时才会出现日期框。这样,所有占位符的该字段的值为 1,因此我可以按此排序以使它们出现在末尾,然后按日期排序以正确排序日期字段中的值。

这是我一直在使用的:

  <?php
  $today = current_time('Ymd');
  $args = array(
    'post_type' => 'course',
    'posts_per_page' => -1,
    'meta_query' => array(
      'relation' => 'OR',
      'placeholder' => array(
          'key' => 'placeholder_course',
          'compare' => '=',
          'value' => '1
      ),
      'future_dates' => array(
          'key' => 'date',
          'compare' => '>=',
          'value' => $today,
      )
    ),
    'orderby' => array(
      'placeholder' => 'ASC',
      'future_dates' => 'ASC',
    ),
    );
  ?>

但订单仍然混乱。我很确定我刚刚在查询中做错了什么,有人可以解释一下吗?

【问题讨论】:

标签: advanced-custom-fields wordpress


【解决方案1】:

为您的占位符值设置一个true/false 字段(如果没有设置日期,您可以检查它)然后以下代码将运行到未来日期或占位符true/false 值设置为true 的任何帖子

更新:您可能不得不使用 2 个查询来完成此操作。

    $args = array(
            'post_type' => 'course',
            'posts_per_page' => -1,
            'meta_key' => 'date',
            'meta_query' => array(
                array(
                    'key' => 'date', 
                    'value' => $today, 
                    'compare' => '>=',
                ),
            ), 
            'orderby'=> 'meta_value_num',
            'order' => 'ASC'
        );
$args2 = array(
            'post_type' => 'course',
            'posts_per_page' => -1,
            'meta_query' => array(
                array(
                    'key' => 'placeholder_course', 
                    'value' => true, 
                    'compare' => '=',
                ),
            ), 
            'order' => 'ASC'
        );

【讨论】:

  • 嗨,马克,这确实拉出了未来的日期和真/假设置为真......但它并没有像我希望的那样订购它(首先是过时的事件,在日期顺序,然后是占位符事件)
  • @JoeCzucha 我更改了元键字段。现在应该没事了
  • 对不起,我犯了一个错误。让我重做
  • 你可能需要做 2 次查询
  • 谢谢马克,我很想尝试在单个查询中完成它,因为我正在使用查询来构建过滤器列表以及输出课程列表。我会继续玩
猜你喜欢
  • 2015-08-07
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 2020-01-28
  • 2014-06-12
  • 2020-09-20
相关资源
最近更新 更多