WordPress管理画面のユーザー一覧に、デフォルトでは表示されていない項目の列を追加したり、標準の列を削除する方法をご紹介いたします。また、列を並び替える方法も合わせて解説いたします。
WordPress管理画面のユーザー一覧にプロフィール項目の列を追加する方法
functions.phpに以下のようなコードを追加してあげます。
function add_users_columns( $columns ) { $columns['columns_url'] = 'サイト'; $columns['columns_nickname'] = 'ニックネーム'; return $columns; } function add_users_custom_column( $dummy, $column, $user_id ) { if ( $column == 'columns_url' ) { $user_info = get_userdata($user_id); return $user_info->user_url; } if ( $column == 'columns_nickname' ) { $user_info = get_userdata($user_id); return $user_info->nickname; } } add_filter( 'manage_users_columns', 'add_users_columns' ); add_filter( 'manage_users_custom_column', 'add_users_custom_column', 10, 3 );
上記の場合、「サイト」と「ニックネーム」に設定しているプロフィール項目が一覧に表示されます。
manage_users_columnsで列を追加し、manage_users_custom_columnで列に表示する項目を設定しています。
以下の部分は列を追加する記述です。”columns_url”と”サイト”は任意の名前をつけて大丈夫です。
$columns['columns_url'] = 'サイト';
以下の部分で追加した列に表示する項目を指定します。
if ( $column == 'columns_url' ) { $user_info = get_userdata($user_id); return $user_info->user_url; }
「$column == ‘columns_url’」で列の名前を指定し、get_userdataでユーザーの情報を取得しています。取得したユーザー情報から「return $user_info->user_url;」でメタキーを指定して情報を返します。メタキーが「user_url」なので、”サイト”に設定している内容が表示されるというわけです。
上述した方法で、サイトやニックネーム以外にもユーザー一覧に列を追加することが可能です。独自に追加したカスタムフィールドもちゃんと表示できました。
ユーザー一覧の列を削除する方法
ユーザー一覧で列を削除するには、unsetで削除したい列を指定してあげます。上述した列の追加と同時に、標準の列を削除する場合、functions.phpに以下のように記述します。
function add_users_columns( $columns ) { $columns['columns_url'] = 'サイト'; $columns['columns_nickname'] = 'ニックネーム'; unset($columns['username'],$columns['name'],$columns['email'],$columns['role'],$columns['posts'],$columns['email']); return $columns; } function add_users_custom_column( $dummy, $column, $user_id ) { if ( $column == 'columns_url' ) { $user_info = get_userdata($user_id); return $user_info->user_url; } if ( $column == 'columns_nickname' ) { $user_info = get_userdata($user_id); return $user_info->nickname; } } add_filter( 'manage_users_columns', 'add_users_columns' ); add_filter( 'manage_users_custom_column', 'add_users_custom_column', 10, 3 );
unset()の部分で、削除したい列を指定します。上記では標準の列をすべて指定しているので、不要な箇所は削除してください。
ユーザー一覧の列を並び替える方法
ユーザー一覧の列を並び替えるには、functions.phpに以下のようなコードを追加します。
function add_users_columns( $columns ) { $columns['columns_url'] = 'サイト'; $columns['columns_nickname'] = 'ニックネーム'; $sort_number = array( 'username' => 0, //ユーザー名 'email' => 1, //メールアドレス 'role' => 2, //権限グループ 'posts' => 3, //投稿 'columns_url' => 4, //サイト 'columns_nickname' => 5 //ニックネーム ); $sort = array(); foreach($columns as $key => $value){ $sort[] = $sort_number{$key}; } array_multisort($sort,$columns); return $columns; } function add_users_custom_column( $dummy, $column, $user_id ) { if ( $column == 'columns_url' ) { $user_info = get_userdata($user_id); return $user_info->user_url; } if ( $column == 'columns_nickname' ) { $user_info = get_userdata($user_id); return $user_info->nickname; } } add_filter( 'manage_users_columns', 'add_users_columns' ); add_filter( 'manage_users_custom_column', 'add_users_custom_column', 10, 3 );
$sort_numberで順番を指定して、列を並び替えています。上記のように記述すると、「ユーザー名→メールアドレス→権限グループ→投稿→サイト→ニックネーム」の順で列が並びます。
“サイト(columns_url)”と”ニックネーム(columns_nickname)”は独自に追加する列なので、この部分は適宜変更してください。
あとがき
管理画面のユーザー一覧は、割とないがしろにしがちなところですよね。あんまりカスタマイズすることはないです。だからこそ、こういった細かい部分でも使いやすさを考慮するとより良いサイトになりますね。
管理画面のユーザー一覧をカスタマイズしたい時は、ぜひ参考にしていただければと思います。