【发布时间】:2016-03-01 17:06:16
【问题描述】:
我有一个名为“团队成员”的自定义帖子类型以及一些自定义列 - 一个专门设置用于订购自定义帖子。我进行了设置,以便当您第一次访问“团队成员”选项卡时,帖子按“团队顺序”列排序 (ASC)。这很好用,但是,我遇到了一个小问题,如果我单击“团队顺序”列将排序反转为 DESC,Wordpress 似乎没有在页面最初加载时识别出它们已经排序。相反,它再次查询帖子并再次以 ASC 顺序返回它们。然后,如果再次单击列标题,它将以 DESC 顺序返回帖子。我怎样才能摆脱点击两次的需要?当页面首次加载时,帖子已经按升序排序。为什么 Wordpress 在最终转到 DESC 之前会错过这一点并再次按升序返回它们?
这是我的代码,如果您想查看更多内容,请告诉我。谢谢
//team_members Post Type: sortable columns
add_filter( 'manage_edit-team_members_sortable_columns', 'team_members_sortable_columns' );
function team_members_sortable_columns( $columns ){
$columns['team_order'] = 'team_order';
return $columns;
}
//team_members Post Type: sortable columns orderby
add_action( 'pre_get_posts', 'team_members_orderby_columns', 1 );
function team_members_orderby_columns( $query ){
if( !is_admin() ){
return;
}
$order = $query->get( 'team_order' );
if( $query->is_main_query() ){
$query->set( 'meta_key', 'team_order' );
$query->set( 'orderby', 'meta_value_num' );
if( $order == '' ){
$query->set( 'order', 'ASC' );
}
}
}
【问题讨论】: