比较元查询中的时间戳不起作用

时间:2017-10-24 作者:Iurie

我想比较a中的两个时间戳meta_query 而不是comparing two dates 在“Y-m-d”格式中,它们各自单独存储在自定义字段中,但没有成功。第一个时间戳是事件开始日期/时间,第二个是本地日期/时间,也作为时间戳。当我在代码中使用它们时,帖子会以不可理解的顺序显示。这里怎么了?“Y-m-d”格式的日期比较工作正常。

function add_custom_post_type_to_query( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'post_type\', array( \'facebook_events\', \'event\' ) );
        $query->set( \'meta_query\', array(
            \'relation\' => \'OR\',
            array(
                \'key\' => \'start_ts\', //this is from facebook_events post type
                \'value\' => current_time( \'timestamp\' ),
                \'compare\' => \'>=\',
                \'type\' => \'DATE\',
            ),
            array(
                \'key\' => \'_start_ts\', //this is from event post type
                \'value\' => current_time( \'timestamp\' ),
                \'compare\' => \'>=\',
                \'type\' => \'DATE\',
            )
        ) );
        $query->set( \'orderby\', \'meta_value\' );
        $query->set( \'order\', \'ASC\' );
    }
}
add_action( \'pre_get_posts\', \'add_custom_post_type_to_query\' );

2 个回复
最合适的回答,由SO网友:Iurie 整理而成

这就是魔法:有时间戳,而不是\'type\' => \'DATE\' 必须使用\'type\' => \'NUMERIC\'.

SO网友:Ryan

谢谢我们遇到了同样的问题,这个问题帮助很大!

Alternate Use Case
我们正在循环一个名为events惊喜,惊喜,它存储事件)。它在元字段中存储时间戳ev_start (“事件开始时间”)。实际上,我们只需要使用orderby值meta_value_num正如您所看到的,meta\\u type被注释掉了)。我们还查询帖子,以确保事件没有发生。

$current_time = current_time(\'timestamp\');

$post_args = array(
   \'post_type\'         => \'events\',
   \'posts_per_page\'    => 5, 
   \'meta_key\'          => \'ev_start\',
   //\'meta_type\'       => \'NUMERIC\',
   \'orderby\'           => \'meta_value_num\', 
   \'order\'             => \'ASC\',
   \'meta_query\' => array(
      array(
         \'key\'     => \'ev_start\',
         \'value\'   => $current_time,
         \'compare\' => \'>=\'
      )
   )
);

$posts = new WP_Query( $post_args );
Resources
WP_Query Code Reference

结束