我的设置
我有一个关于管理面板中用户过滤器过滤的问题。我添加了显示“registration\\u date”过滤器的代码,该过滤器工作正常。I found this website to describe the process. This part works fine.现在,我正在尝试按最近注册的用户实现默认排序。在我的功能中。php,我尝试过这种方法which I\'ve found here. This part works partially only. 这是我的代码:
add_action(\'pre_get_users\', \'change_user_order\');
function change_user_order($query) {
$screen = get_current_screen();
if( is_admin() && \'users\' == $screen->base) {
if( !isset($query->query[\'orderby\']) ) {
$query->set(\'orderby\', \'registered\');
$query->set(\'order\', \'DESC\');
}
}
// We need to remember to return the altered query.
return $query;
}
默认情况下,此部分工作正常,因为过滤是由最新版本完成的。现在,它似乎还取消了对其他可排序列进行排序的所有其他可能性(例如asc登录)。例如,此urlwp-admin/users.php?orderby=login&order=asc
不会显示按登录名排序的用户字段。What did I do wrong?Update - Accepted solution & final code
为完整起见,用户面板中此默认选择的可排序列和订单列的最终代码附在此处:
add_action(\'pre_get_users\', \'change_user_order\');
function change_user_order($query) {
$screen = get_current_screen();
if( is_admin() && \'users\' == $screen->base) {
// Set default `orderby` to \'registered\'.
if( empty( $_REQUEST[\'orderby\'] ) || !isset($query->query_vars[\'orderby\']) ) {
$query->set(\'orderby\', \'registered\');
}
// Set default `order` to \'DESC\'.
if( empty( $_REQUEST[\'order\'] ) || !isset($query->query_vars[\'order\']) ) {
$query->set(\'order\', \'DESC\');
}
}
// We need to remember to return the altered query.
return $query;
}