Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
如何比较wordpress中的自定义字段日期?_Wordpress_Wordpress Theming_Custom Fields - Fatal编程技术网

如何比较wordpress中的自定义字段日期?

如何比较wordpress中的自定义字段日期?,wordpress,wordpress-theming,custom-fields,Wordpress,Wordpress Theming,Custom Fields,我正在做一个事件管理的任务,我已经编写了一个小部件来在边栏中显示即将发生或过去的事件,但是我不能将自定义字段作为日期处理。以下是我的代码,日期存储为“m/d/Y”。请帮我解决这个问题。非常感谢 $today = date('m/d/Y'); $args = array( 'post_type' => 'event', 'post_status' => 'publish', 'meta_key' => 'event_date

我正在做一个事件管理的任务,我已经编写了一个小部件来在边栏中显示即将发生或过去的事件,但是我不能将自定义字段作为日期处理。以下是我的代码,日期存储为“m/d/Y”。请帮我解决这个问题。非常感谢

$today = date('m/d/Y');
    $args = array(
        'post_type' => 'event',
        'post_status' => 'publish',
        'meta_key' => 'event_date',
        'posts_per_page' => '5',
        'meta_query' => array(
                                array(
                                    'key' => 'event_date',
                                    'value' => $today,
                                    'compare' => '<=',
                                    'type' => 'date'
                                )
        ),
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    );

    $the_query = new WP_Query( $args );
$today=日期('m/d/Y');
$args=数组(
“post_类型”=>“事件”,
“发布状态”=>“发布”,
“元密钥”=>“事件日期”,
“每页帖子数”=>“5”,
“元查询”=>数组(
排列(
'键'=>'事件日期',
“价值”=>今天的美元,

“比较”=>“日期必须为YYYY-MM-DD格式,元查询比较才能工作

$today = date("Y-m-d");

虽然我同意前面的回答(您应该以
YYYY-MM-DD
格式存储日期),但我认为我可以使用Wordpress过滤器找到一个解决方法,所以就这样吧

这应该进入
functions.php
文件:

add_filter('posts_where', 'my_callback', 10, 2);
function my_callback( $where, $wp_query_obj ) {
    if( isset( $wp_query_obj->query['date_format'] ) ) {
        $where = preg_replace('~CAST\((.+?)\)~', "STR_TO_DATE(CAST($1), '{$wp_query_obj->query['date_format']}')", $where);
    }
    return $where;
}
这是你的问题:

$today = date('m/d/Y');
$args = array(
    'post_type'      => 'event',
    'posts_per_page' => '5',
    'meta_key'       => 'event_date',
    'meta_value'     => $today,
    'meta_compare'   => '<=',
    'date_format'    => '%m/%d/%Y'
    'orderby'        => 'meta_value_num',
    'order'          => 'ASC'
);
$the_query = new WP_Query( $args );
$today=日期('m/d/Y');
$args=数组(
“post_类型”=>“事件”,
“每页帖子数”=>“5”,
“元密钥”=>“事件日期”,
“meta_值”=>今天$,

“meta\u compare”=>“WordPress有一个函数用于此:
当前时间
谢谢,它工作正常,请记住,存储日期也应采用此格式。