WordPress 管理画面のユーザー一覧ページにカラムを追加する 保存版

2018-08-23

管理画面のユーザー一覧に独自のカラムを追加する方法。分かりにくいので詳しく書きました。投稿一覧と大体同じだけど、使うフック名が違います。

やりたいこと

管理画面「ユーザー」ページのユーザー一覧の表にカラム(項目)を追加する。既存のカラムを削除する。既存のカラムの並び順を変える。

カラムをソートできるようにする。

コード

まずコード。自分で決める任意の名前は、区別しやすく「my-」または「my_」から始まる名前にしてあります。

解説

カラムの追加・削除・移動

まず、manage_users_columns フックでカラムを追加(削除)します。

既存のカラムを移動させる方法は、なかなか一筋縄にはいかず、僕は一旦削除してからもう一度好きな場所に追加する方法をとっています。

既存のカラムのカラム名を知る方法

カラムの見出し(thタグ)のidプロパティの値がカラム名なので、ChromeやSafariのWebインスペクタを使うかページのソースを見て調べます。

セルに表示させる値

カラムを作成したら、manage_users_custom_column フックでセルに表示させる値を決めます。

呼び出し関数にはカラム名や各行のユーザーIDが返ってくるので、それらを使いましょう。

さて、ここまででカラム作成は完了ですが、ソート機能を持たせたい場合は、もうちょいやることがあります。

カラムをソートできるようにする

カラムをソートできるようにするには、my_manage_users_sortable_columns フックを使います。やることは manage_users_columns と同じです。

ここで、カラム名にソート用の名前をつけましたが、この名前は、ソートをした際にGETキー(orderby=my-sort-name-1)として使われます。

このGETパラメータ orderby をもとに、どのカラム基準でソートを行うか決まります。

ソートの基準を決める

最後に、カラムごとに何を基準にソートさせるかを決めなければなりません。これは pre_get_users を使います。

pre_get_users とは、簡単に言うとユーザー情報に関するリクエストを扱う WP_User_Query の生成前に実行するものです。つまり、上記の GETパラメータ orderbyをもとに条件分岐させて、ユーザー一覧を作成するためのクエリをここで変更するというあんばい。

書き方は pre_get_posts とほぼ同じです。