我有一个元数据列表,我正在使用WP_Query
和meta_key
对ASC
进行排序,但任何前面为零的数字都会出现在列表的底部,我希望它出现在顶部。这可以使用WP_Query
实现吗?
数据示例:
10:00
11:00
12:00
09:00
在这些时间的背景下,09:00应该出现在顶部。
我使用pre_get_posts
来修改查询,因为页面也使用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' );
请使用以下代码按数值查询您的帖子
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' )
我已经测试过了,希望这会有所帮助。
我还没有测试它,但尝试下面的代码,它应该可以工作。
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' );