我有一个要使用ASC
和WP_Query
对meta_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' );
答案 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' );