Line ' . __LINE__ . ' ' . print_r( $user_query, true ) . ''; if ( 'nickname' == $user_query->query_vars['orderby'] ) { global $wpdb; $user_query->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; $user_query->query_where .= " AND alias.meta_key = 'nickname' "; $user_query->query_orderby = ' ORDER BY alias.meta_value ' . ( $user_query->query_vars['order'] === 'ASC' ? 'asc ' : 'desc ' ); } // This will show the modified query // echo '
Line ' . __LINE__ . ' ' . print_r( $user_query, true ) . ''; } /** * Add column to admin > users * * @param Array $columns The column headings for Users admin. * * @return Array $columns The modified column headings for Users admin. */ function nickname_manage_users_columns( $columns ) { $columns['nickname'] = 'Nickname'; return $columns; } /** * Retrieving data for created columns. * * @param String $output Custom column output. Default empty. * @param String $column_key Column name. * @param Integer $user_id ID of the currently-listed user. * * @return Void */ function nickname_manage_users_custom_column( $output, $column_key, $user_id ) { switch ( $column_key ) { case 'nickname': $output = get_user_meta( $user_id, 'nickname', true ); return $output; break; case 'user_id': $output = $user_id; return $output; break; default: break; } // Default $output is empty. // echo '
Line ' . __LINE__ . ' ' . print_r( $output, true ) . ''; } /** * Spe * * @param [type] $columns [description] */ /** * Specify what position in the table you want the column. * * @param Array $columns The original columns. * * @return Array $columns The filtered columns. */ function add_id_any_position_of_users_columns( $columns ) { $insert = [ 'user_id' => 'ID' ]; $index = 1; return array_slice( $columns, 0, $index, true ) + $insert + array_slice( $columns, $index, count( $columns ) - $index, true ); } /** * Make user id column sortable. * * @param Array $columns The original columns. * * @return Array $columns The filtered columns. */ function add_sortable_user_columns( $columns ) { $columns['user_id'] = 'ID'; $columns['role'] = 'role'; $columns['nickname'] = 'nickname'; return $columns; } /** * Set column width */ function add_user_id_column_style() { echo ''; } // add_filter( 'pre_user_query', 'set_user_column_orderby_args' ); // add_filter( 'users_list_table_query_args', 'set_user_column_orderby_args' ); // add_filter( 'request', 'set_user_column_orderby' ); // add_filter( 'pre_user_query', 'set_user_column_orderby' ); /** * Doesn't work * * [set_user_column_orderby description] * * @param [type] $args [description] */ function set_user_column_orderby_args( $args ) { global $pagenow; echo '
' . __FILE__ . ''; // if ( empty( $args['orderby'] ) ) { // $args['orderby'] = 'ID'; // } // if ( empty( $args['order'] ) ) { // $args['order'] = 'ASC'; // } // echo '
' . print_r( $args, true ) . ''; // if ( isset( $args['orderby'] ) && 'nickname' == $args['orderby'] ) { // $args = array_merge( $args, array( // 'meta_key' => 'nickname', // 'orderby' => 'meta_value' // ) ); // } return $args; } /** * [set_user_column_orderby description] * * @param [type] $query [description] */ function set_user_column_orderby( $query ) { global $pagenow; if ( is_admin() && 'users.php' === $pagenow ) { $section = $_GET['nickname'][0] ?? $_GET['nickname'][1] ?? null; if ( null !== $section ) { $meta_query = array( array( 'key' => 'nickname', 'value' => $section, ), ); $query->set( 'meta_key', 'nickname' ); $query->set( 'meta_query', $meta_query ); } } // [query_fields] => SQL_CALC_FOUND_ROWS wp_users.ID // [query_from] => FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) // [query_where] => WHERE 1=1 AND ( // ( // ( wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '{c538d0e57c7ae080cca2d791cad651e8f321d15353e993cea0d421d64988e415}\"isd\"{c538d0e57c7ae080cca2d791cad651e8f321d15353e993cea0d421d64988e415}' ) // ) // ) // [query_orderby] => ORDER BY user_email ASC // if ( 'nickname' === $query->get( 'orderby' ) ) { // $query->set( 'orderby', 'meta_value_num' ); // $query->set( 'meta_key', 'nickname' ); // } // echo '
' . print_r( $query, true ) . ''; return $query; }