admin管理员组文章数量:1305176
I would like to organise users by date registered every time an admin visits the users page, without having to click again from:
http://localhost:8888/wp-admin/users.php
I can add the date registered column and the sorting but I can't seem to find any documentation on how to pre sort the users without actually clicking the sort button on the column name.
I essentially want the users list to always be (unless selected otherwise):
/wp-admin/users.php?orderby=registered&order=asc
I would like to organise users by date registered every time an admin visits the users page, without having to click again from:
http://localhost:8888/wp-admin/users.php
I can add the date registered column and the sorting but I can't seem to find any documentation on how to pre sort the users without actually clicking the sort button on the column name.
I essentially want the users list to always be (unless selected otherwise):
/wp-admin/users.php?orderby=registered&order=asc
Share
Improve this question
edited Sep 18, 2016 at 21:35
Dave Romsey
17.9k11 gold badges56 silver badges70 bronze badges
asked Nov 23, 2015 at 15:48
ThomasThomas
1511 silver badge4 bronze badges
1
- @PieterGoosen That is post ordering, I'm looking for user ordering. Thanks anyway. Tom – Thomas Commented Nov 24, 2015 at 9:47
3 Answers
Reset to default 9This code will add the sortable user registration date column and it will handle default sorting of the user table by registration date.
The majority of this code was taken from Mika Epstein's Recently Registered plugin. I added the bit to handle the default sort order which is a tweaked snippet of code from this post.
/**
* Registers users by date registered by default. When user clicks
* other sortable column headers, those will take effect instead.
*/
add_action( 'pre_user_query', 'wpse209591_order_users_by_date_registered_by_default' );
function wpse209591_order_users_by_date_registered_by_default( $query ) {
global $pagenow;
if ( ! is_admin() || 'users.php' !== $pagenow || isset( $_GET['orderby'] ) ) {
return;
}
$query->query_orderby = 'ORDER BY user_registered ASC';
}
/**
* Registers column for display
*/
add_filter( 'manage_users_columns', 'wpse209591_users_columns');
function wpse209591_users_columns( $columns ) {
$columns['registerdate'] = _x( 'Registered', 'user', 'your-text-domain' );
return $columns;
}
/**
* Handles the registered date column output.
*
* This uses the same code as column_registered, which is why
* the date isn't filterable.
*
* @global string $mode
*/
add_action( 'manage_users_custom_column', 'wpse209591_users_custom_column', 10, 3);
function wpse209591_users_custom_column( $value, $column_name, $user_id ) {
global $mode;
$mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
if ( 'registerdate' != $column_name ) {
return $value;
} else {
$user = get_userdata( $user_id );
if ( is_multisite() && ( 'list' == $mode ) ) {
$formated_date = __( 'Y/m/d' );
} else {
$formated_date = __( 'Y/m/d g:i:s a' );
}
$registered = strtotime( get_date_from_gmt( $user->user_registered ) );
$registerdate = '<span>'. date_i18n( $formated_date, $registered ) .'</span>' ;
return $registerdate;
}
}
/**
* Makes the column sortable
*/
add_filter( 'manage_users_sortable_columns', 'wpse209591_users_sortable_columns' );
function wpse209591_users_sortable_columns( $columns ) {
$custom = array(
// meta column id => sortby value used in query
'registerdate' => 'registered',
);
return wp_parse_args( $custom, $columns );
}
/**
* Calculate the order if we sort by date.
*
*/
add_filter( 'request', 'wpse209591_users_orderby_column' );
function wpse209591_users_orderby_column( $vars ) {
if ( isset( $vars['orderby'] ) && 'registerdate' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'registerdate',
'orderby' => 'meta_value'
) );
}
return $vars;
}
why so complicated? just use the default hook for that:
function change_user_order($args){
$args["orderby"] = "user_registered";
$args["order"] = "DESC";
return $args;
}
add_filter("users_list_table_query_args","change_user_order");
from class-wp-user-query.php:
May be a single value, an array of values, or a multi-dimensional array with fields as keys and orders ('ASC' or 'DESC') as values. Accepted values are 'ID', 'display_name' (or 'name'), 'include', 'user_login' (or 'login'), 'login__in', 'user_nicename' (or 'nicename'), 'nicename__in', 'user_email (or 'email'), 'user_url' (or 'url'), 'user_registered' (or 'registered'), 'post_count', 'meta_value', 'meta_value_num', the value of
$meta_key
, or an array key of$meta_query
. To use 'meta_value' or 'meta_value_num',$meta_key
must be also be defined. Default 'user_login'.
If you want to overwrite the default setting, you have to check if the args are empty first:
function default_sort_users( $args ) {
if ( empty( $args['orderby'] ) ) {
$args['orderby'] = 'user_registered';
}
return $args;
}
add_filter( 'users_list_table_query_args', 'default_sort_users' );
本文标签: adminCan you have the users list pre sorted by specific column
版权声明:本文标题:admin - Can you have the users list pre sorted by specific column? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741775273a2396987.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论