Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询日期数组以仅显示未来事件-PHP_Php_Jquery_Mysql_Wordpress_Date - Fatal编程技术网

查询日期数组以仅显示未来事件-PHP

查询日期数组以仅显示未来事件-PHP,php,jquery,mysql,wordpress,date,Php,Jquery,Mysql,Wordpress,Date,在Wordpress中,我创建了一个名为“事件”的自定义帖子类型,并使用高级自定义字段添加到自定义字段中。我只有基本字段,因为我们对日历的需求本身就是基本的 字段包括:开始日期、结束日期、开始时间、结束时间、位置、标题 我试图用一个数组来查询帖子,这个数组基本上是“如果结束日期大于今天的日期,那么显示帖子” 问题是高级自定义字段有一个内置的日期选择器,它将日期格式化为YYYYMMDD,而不是像PHP那样的YYYY-MM-DD。以下是我今天的代码: if (isset($_GET['_m']))

在Wordpress中,我创建了一个名为“事件”的自定义帖子类型,并使用高级自定义字段添加到自定义字段中。我只有基本字段,因为我们对日历的需求本身就是基本的

字段包括:开始日期、结束日期、开始时间、结束时间、位置、标题

我试图用一个数组来查询帖子,这个数组基本上是“如果结束日期大于今天的日期,那么显示帖子”

问题是高级自定义字段有一个内置的日期选择器,它将日期格式化为YYYYMMDD,而不是像PHP那样的YYYY-MM-DD。以下是我今天的代码:

if (isset($_GET['_m'])) {

    $current_month = $_GET['_m'];
    $current_day = date('d'); // the actual day
    $current_year = $_GET['_y'];
    $future_year = 2016;

    $startday = $current_year.$current_month.$current_day;
    $endday = $future_year.$current_month.$current_day;

    echo $startday;
    echo $endday;

}
    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_key' => 'event_date_ends',
    'meta_query' => array( 
                'key' => 'event_date_ends',
                'compare' => '>=',
                'value' => $startday,
                'type' => 'DATE'
            ), 
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);
我尝试了至少20种变体和技术,最终结果是A)返回所有已发布的“事件”,或B)不返回已发布的“事件”

我正试图避免使用日历插件,原因有很多,主要是因为大多数插件都有大量的资源,而且客户端需要特别列出返回值,而且我还没有找到一个可定制的日历插件。从外观上看,它是批准的,因为它是现在,但过去的事件不会自动删除自己

更新:

我能够将高级自定义字段日期转换为YYYY-MM-DD,并使用此代码,但它返回所有“事件”


事实证明,我只需通过functions.php将其转换为unix时间戳,就可以了

functions.php

function custom_unixtimesamp ( $post_id ) {
    if ( get_post_type( $post_id ) == 'events' ) {
    $startdate = get_post_meta($post_id, 'event_date_begins', true);

        if($startdate) {
            $dateparts = explode('/', $startdate);
            $newdate1 = strtotime(date('d.m.Y H:i:s', strtotime($dateparts[1].'/'.$dateparts[0].'/'.$dateparts[2])));
            update_post_meta($post_id, 'unixstartdate', $newdate1  );
        }
    }
}
add_action( 'save_post', 'custom_unixtimesamp', 100, 2);
然后询问

$today = time();    

    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_query' => array(
        array(
            'key' => 'unixstartdate',
            'compare' => '>=',
            'value' => $today,
            )
            ),
    'meta_key' => 'event_date_begins',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

希望其他人能发现这一点有用。

我发现了实际问题,所以我想我应该更新一下

ACF文档说明使用$today=date('Ymd')来比较日期,但您确实需要使用current_time('Ymd'),因此我删除了我添加的functions.php代码并修复了该问题,而不是解决它

这是我的问题

$event1 = current_time('Ymd');
    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_query' => array(
        array(
            'key' => 'event_date_ends',
            'compare' => '>=',
            'value' => $event1,
            )
            ),
    'meta_key' => 'event_date_ends',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

仅供参考,您可以更改ACF保存日期的格式。@pmandell谢谢。我能够改变格式!
$event1 = current_time('Ymd');
    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_query' => array(
        array(
            'key' => 'event_date_ends',
            'compare' => '>=',
            'value' => $event1,
            )
            ),
    'meta_key' => 'event_date_ends',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);