WP查询,ACF不显示日期早于今天的帖子

时间:2016-06-28 10:07:14

标签: php wordpress

早上好,

如果自定义字段(event_date)(ACF)比今天旧,我尝试遍历特定类别中的帖子。我使用的查询是:

$today = current_time('Ymd');
$args = array(
'category' => 42, // Events category
'post_status' => 'publish', // Published
'posts_per_page' => '0', // Unlimited posts per page
'meta_query' => array(
    array(
        'key' => 'event_date', // Only loop through posts when the event date
        'compare' => '>', // Is greater than $today, ie in the future
        'value' => $today, 
    )
),
'meta_key' => 'event_date',
'orderby' => 'meta_value',
'order' => 'ASC',
);

在ACF中,我已将保存的日期设置为默认值(yymmdd),并且我已将其设置为与$ today var(Ymd)匹配,但它仍然显示23日的事件六月。

客户希望它们列出以日期顺序显示事件,但不显示过去的事件。我已经完成了一半工作,但是这个问题引起了我一些问题,因为我认为它应该有效。我已经检查了后端的所有内容,看起来都很好。我也可能有一个金发碧眼的时刻......

非常感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

查看codex,看起来WP可能会遇到由数字组成的meta_value进行排序的问题。复制如下:

  

'meta_value' - 请注意,'meta_key = keyname'也必须出现在   查询。另请注意,排序将按字母顺序排列   字符串(即单词)很好,但数字可能是意外的(例如   1,3,34,4,56,6等,而不是1,3,4,6,34,56,你可能会   自然期待)。使用'meta_value_num'代替数值。   如果要将元值转换为,也可以指定“meta_type”   特定类型。可能的值为'NUMERIC','BINARY','CHAR',   'DATE','DATETIME','DECIMAL','SIGNED','TIME','UNSIGNED',同如   在'$ meta_query'中。使用'meta_type'时,您还可以使用meta_value_ *   因此。例如,当您使用DATETIME作为'meta_type'时,您可以   使用'meta_value_datetime'来定义订单结构。

所以我首先尝试meta_value_num看它是否有效。 如果没有,我会将meta_type转换为DATEDATETIME

备注:

  • 'posts_per_page' => -1,显示所有帖子'posts_per_page' => '0',
  • 'cat' => 42,不是'category' => 42,