按自定义日期范围输入

时间:2016-05-24 09:50:07

标签: php wordpress

我有自定义的帖子类型'课程'它附有一个自定义字段,称为“课程日期”。日期范围和查询工作正常,但我需要允许用户自己输入日期范围,然后更新列表(例如本月或本周)并且似乎无法解决如何允许他们输入日期,然后用此更新查询。供参考,来自taxonomy-subject.php的查询:

$args = array(

       'meta_key' => 'date_of_lesson', // The meta key to sort on
       'orderby' => 'meta_value',
       'order' => 'ASC',
       'posts_per_page' => -1,
       'meta_query' => array(
    array(
        'key' => 'date_of_lesson',
        'value' => array($startdate, $enddate),
        'compare' => 'BETWEEN',
        'type' => 'DATE'
    )
)

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您只需转换用户以 strtotime 格式提供的日期,然后将其更改为&#39; yyyy-mm-dd < / strong>&#39;(2016-05-24)格式并传入此查询。如果未传递此格式,则查询将返回空结果。

用户选择的输入应按以下格式更改为开始日期和结束日期。

$start = '2011-11-31';
$end = '2011-10-01';
$args = array(
    'post_type' => 'YOUR-POST-TYPE',
    'posts_per_page' => -1,
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_key' => 'date_of_lesson',
    'meta_query' => array(
        array(
            'key' => 'date_of_lesson',
            'value' => array($start, $end),
            'compare' => 'BETWEEN',
            'type' => 'DATE'
        )
    )
);
// Make the query
$events_query = new WP_query();
$events_query->query($args);

答案 1 :(得分:0)

基本上你需要在页面上设置一个表单,用你和你的日期来显示你的数据,使用像jQuery日期选择器这样的东西可以让生活更轻松,并将它们保存到一个字段。

提交后,获取值并检查它们的格式,并确保它是https://codex.wordpress.org/Class_Reference/WP_Meta_Query的YYYY-MM-DD。如果您没有以正确的格式提供日期,则可能需要使用http://php.net/manual/en/function.strtotime.php,然后再使用http://php.net/manual/en/function.date.php

发布表单时,请务必在表单中保留发布的日期值(值=&#34;&#34;等...),以便用户可以轻松调整他们正在查看的内容然后再次提交表格进行任何调整。