我有一个自定义帖子类型'事件',我试图按日期排序。由于某种原因它不起作用。我很困惑,因为我之前已经做过这个,没有问题。这次有什么问题?
前三行是通过ACF自定义字段获取分配给页面的月,年和状态。 (这与事件所具有的ACF字段是分开的。)基本上我只是试图获取该状态,月份和年份的事件。
<?php
$thestate = get_field('page_state');
$themonth = get_field('page_month');
$theyear = get_field('page_year');
$meta_query = array(
array(
'key' => 'event_state',
'value' => $thestate,
'compare' => '='
),
array(
'key' => 'event_month',
'value' => $themonth,
'compare' => '='
)
);
$args = array(
'meta_key' => 'date_of_event',
'order_by' => 'meta_value_num',
'order' => 'ASC',
'post_type' => 'event',
'posts_per_page' => -1,
'meta_query' => $meta_query
);
$myposts = get_posts($args);
if($myposts) { ?>
<?php foreach($myposts as $post) { ?>
<?php setup_postdata( $post ); ?>
/*--Code Here--*/
<?php wp_reset_postdata(); ?>
<?php } ?>
<?php } ?>
编辑: 我想出了这个问题。我花了太长时间才弄明白,但事实证明这是因为我使用'order_by',而我需要使用'orderby'...删除下划线是需要的全部内容完成。我不确定为什么会这样。 'order_by'似乎适合其他人,所以我仍然有点困惑,但很高兴我设法修复它。
答案 0 :(得分:0)
您的order_by正在使用'meta_value_num',但它可能应该使用'meta_value',因为您的日期是字符串。您必须检查您的存储日期是否采用“Y-m-d”格式,否则排序将无法正常工作。