早上好,
如果自定义字段(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日的事件六月。
客户希望它们列出以日期顺序显示事件,但不显示过去的事件。我已经完成了一半工作,但是这个问题引起了我一些问题,因为我认为它应该有效。我已经检查了后端的所有内容,看起来都很好。我也可能有一个金发碧眼的时刻......
非常感谢任何帮助!
谢谢!
答案 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转换为DATE
或DATETIME
。
备注:强>
'posts_per_page' => -1,
显示所有帖子'posts_per_page' => '0',
'cat' => 42,
不是'category' => 42,