我在获取一个参数数组以按Wordpress中的日期对事件列表进行排序时遇到了一些麻烦。我已经在Stack Overflow和其他地方找到了几个建议的解决方案,但是经过大量的试验和错误后,这些解决方案似乎都没有工作。
没什么特别的,它应该比这容易得多。也许它更容易,我只是在思考它?非常感谢任何帮助。
我使用插件http://www.advancedcustomfields.com在帖子中设置了自定义日期字段,数据库中的字段名称为" event_date"。
我已尝试过各种形式的以下内容:
$args = array(
'post_status' => 'publish',
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 6,
'paged' => $paged,
'post__not_in' => $exclude_array
);
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query($args);
$default_excerpt_length = 250;
和
$args = array(
'post_status' => 'publish',
'meta_key' => 'event_date',
'meta_value_num' => time(),
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 6,
'paged' => $paged,
'post__not_in' => $exclude_array
);
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query($args);
$default_excerpt_length = 250;
和
$today = date('Y-m-d');
query_posts(array(
'post_type' => 'events',
'posts_per_page' => 6,
'paged' => $paged,
'meta_key' => 'event_date',
'orderby' => 'meta_value',
'order' => 'DESC',
'meta_query' => array(
array(
'key' => 'event_date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'CHAR'
)
)
));
答案 0 :(得分:8)
这最终导致我需要的解决方案:http://www.advancedcustomfields.com/resources/field-types/date-picker/
我最终通过该网址将高级自定义字段设置更改为yymmdd。
这是我用来查询帖子的内容:
$args = array(
'post_status' => 'publish',
'posts_per_page' => 6,
'paged' => $paged,
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
这就是我用来调整页面上日期的视觉输出:
<?php
$source = get_field('event_date');
$date = new DateTime($source);
echo $date->format('F j, Y');
?>
答案 1 :(得分:0)
在搜索了多个相似的帖子之后,我将各种其他SO帖子的一部分放到了一起的解决方案中,希望它可以对其他人有所帮助。
我有一个名为“ date”的自定义元键(我知道命名约定很差),该查询显示将来所有带有自定义“ date”元字段的帖子,并按与今天最接近的顺序排序。
$args = array(
'post_type' => 'training-course',
'posts_per_page' => '-1',
'meta_key' => 'date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'date',
'value' => date("YYmmdd"),
'compare' => '<='
)
)
);