2016-06-28 50 views
1

早上,所有的约会,WP查询,与ACF不显示职位有比今天更旧

我通过岗位试图循环特定类别如果自定义字段(活动日期)(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,我给自己定的保存日期为默认(年月月日日),我已经将它设置为匹配$今天VAR(年月日),但它仍然显示6月23日举行的活动。

客户希望他们列出以日期顺序显示事件,但不显示过去的事件。我有它的一半工作,但是这一个正在导致我一些问题,因为我相信它应该工作。我已经仔细检查了后端的所有内容,并且都很好看。我可能也会有一个金发的时刻...

任何援助将不胜感激!

谢谢!

回答

0

看着codex,它看起来像WP可能有一个由数字组成的meta_value排序的问题。下面复制:

“meta_value” - 请注意,“meta_key =键名”也必须存在于 查询。还要注意的是,排序将按字母顺序排列,即 罚款为字符串(即单词),但可能是意想不到的数字(例如 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,
+0

感谢队友,完全错过了这最后的点!这是有点工作.. 7月23日事件仍然显示,但在列表的最底部,所以排序工作后,将'meta_value'改为'meta_value_num'(没有'meta_type')。奇怪这一个...链接是https://touchstonecrm.co.uk/events/如果你想看看我的意思 – AshboDev

+0

如果'current_time'返回一个字符串,它应该没问题。你认为'compare_value_num'与'compare'发生了相同的问题吗?因为问题可能会比较,因为字符串与数字不一样。 'meta_query'中有一个'type'参数。你可以尝试将其设置为不同的值吗? –

+0

尝试类似''type'=>'NUMERIC',' –