WP_ASC用数字数据查询的顺序-零出现在列表的末尾

时间:2018-07-26 08:40:22

标签: wordpress

我有一个要使用ASCWP_Querymeta_key进行排序的元数据列表,但是任何以0开头的数字都位于列表的底部,我想而是显示在顶部。可以使用WP_Query来实现吗?

数据示例:

10:00
11:00
12:00
09:00

在这种情况下,应该在顶部显示09:00。

我正在使用pre_get_posts来修改查询,因为页面也使用FacetWP,而FacetWP在WP_Query上并不总是很好。的代码是:

function events_query( $query ) { 
    if( is_post_type_archive('events') ) {
        $query->set( 'posts_per_page', -1 );
        $query->set( 'meta_key' , 'start_time' );
        $query->set( 'orderby' , 'meta_value' );
        $query->set( 'order', 'ASC' );
    }
}
add_filter( 'pre_get_posts', 'events_query' );

2 个答案:

答案 0 :(得分:0)

请使用以下代码按数值查询帖子

function events_query( $query ) { 
    if( is_post_type_archive('events') ) {
        $query->set( 'post_type', 'event' );
        $query->set( 'posts_per_page', -1 );
        $query->set( 'meta_key' , 'start_time' );
        $query->set( 'meta_type' , 'NUMERIC' );
        $query->set( 'orderby' , 'meta_value_numeric' );
        $query->set( 'order', 'ASC' );
    }
    return $query;
}
add_filter( 'pre_get_posts', 'events_query' )

我已经对其进行了测试,希望对您有所帮助。

答案 1 :(得分:0)

我还没有测试它,但是尝试下面的代码,它应该可以工作。

function events_query( $query ) { 
        if( is_post_type_archive('events') ) {
            $query->set( 'post_type', 'event' );
            $query->set( 'posts_per_page', -1 );
            $query->set( 'meta_key' , 'start_time' );
            $query->set( 'orderby' , 'meta_value_num' );
            $query->set( 'order', 'ASC' );
        }
        return $query;
    }
    add_filter( 'pre_get_posts', 'events_query' );