【WP管理画面カスタマイズ】ユーザーページに項目追加&そのフィールドを一覧に出す方法
| 更新: 2023/10/26 2508文字

今回は、以前お仕事で少しやったんですが、『会員・顧客』や『複数執筆者』など、複数のユーザーが運営に絡む状況で使えるWP管理画面カスタマイズを紹介します。内容の関係で『一人でブログ書いてる人』にはあてはまりませんが、ユーザー管理には役立ちそうです。さっそく内容を確認していきましょう。
目次
やってみたい内容~ユーザーの一覧ページに独自の項目を作って確認・管理する
まずは、通常のWPユーザー一覧画面。普通はこんな感じです。デフォルトでの項目は『ログインユーザー名・名前・メール・権限・投稿数』です。『ユーザーが増えてきたので、これとは別の項目を作って確認・管理したい』みたいな状況を想定しています。
項目は、『複数執筆者・会員読者タイプのサイトで、ログイン時間』『SNSなどのリンク』『無料/有料会員』『会社や代理店名』『住んでいる地域』『男性会員 / 女性会員』など、サイトの状況によって異なるでしょう。
WPユーザーページに項目追加&そのフィールドを一覧に出すプログラム(functions.php)
こちらが今回のプログラムです。『詳細ページに、項目を追加』『管理画面からの新規ユーザー登録時に、項目を追加』『ユーザー一覧にカラム(列)を追加』『ユーザー一覧に追加したカラムで、内容を取得・表示』という4つの機能を実装しました。それぞれの項目を確認していきましょう。
ユーザーの詳細ページに、項目を追加する(profile.php ・ user_contactmethodsアクションフック )
最初に、ユーザー情報で、『m_company(会社名)』『m_food(すきな食べ物)』という二つのフィールドを新しくつくりました。これらは、『個別のユーザーページ(wp-admin/profile.php)』で入力できるようになります。
管理画面からの新規ユーザー登録時に、項目を追加する(user-new.php ・ user_new_form)
上記の『user_contactmethodsアクションフック』だけでは、管理画面からユーザー新規登録のページには出ないようです。そこで『user_new_form』フックを使って、『wp-admin/user-new.php(新規ユーザー登録)』のページからも入力できるようにします。最初にできることは最初にまとめてやっちゃったほうが良いです。
ユーザー一覧にカラム(列)を追加する(users.php ・ manage_users_columnsアクションフック)
あとは、ユーザー一覧画面で、特定の項目を見られるようにしたいと思います。以前は、記事一覧にフィールド値を表示するように『manage_edit-post_columnsフック』を使いましたが、それのユーザー版もあります(manage_users_columns)。これを使って、『m_company(会社名)』『m_food(すきな食べ物)』の二つの項目の列を作りました。中身はこの時点ではまだ入りません。
ユーザー一覧に追加したカラムで、内容を取得・表示する(users.php ・ manage_users_columnsアクションフック)
次は、追加したカラムに、それぞれのユーザーデータを取得して表示します。フックは manage_users_columnsを使います。get_userdataでidを指定してユーザーデータを取り、例えば変数$user_infoに入れておいて、そこから『m_food(好きな食べ物)』を指定して抜く、という感じでしょうか。
こんな形で、新しく作ったフィールド2つが、ユーザー一覧にでるようになりました。
注意ポイント:正しい受け入れパラメーター数を書かないと、Uncaught ArgumentCountErrorが発生してユーザー情報が表示されなくなる
manage_users_columnsフック内に『10,3』という数字がありますが、こちらは『優先順序(10を設定、少ないほど早く実行)』と『受け入れパラメーター数(3個)』という意味です(詳細はCodexのadd_actionページもご覧になってください)。パラメーター数や優先順序を書かなくても良いフックもありますが、こちらはファンクションが3個パラメーターを持っているので、注意が必要です。
この数値を書かなかったり、受け入れパラメータ数と一致しない場合は『Uncaught ArgumentCountError』が発生してしまい、ユーザー一覧が表示されなくなってしまいます。
参考リンク(codex)
■関数リファレンス/add_action
https://wpdocs.osdn.jp/関数リファレンス/add_action
■フィルターフック一覧
http://wpdocs.osdn.jp/プラグイン_API/フィルターフック一覧
あとがき・まとめ
- サイトの内容によっては、ユーザーの一覧ページに独自の項目を作って確認ができるとラク
- ユーザーの詳細ページに、項目追加は、user_contactmethodsフック・新規登録ページでも入力できるようには user_new_formフック
- 一覧に表示するにはmanage_users_columnsフック
まとめるとこんな形でしょうか。記事一覧同様、ユーザーが多くかかわる形態のサイトでは、項目追加ができると、運営がラクになる可能性もあるので、ぜひご検討ください。 中には、プラグインがこれらのフックを使って、カラムを作ってくれるものもあります(干渉に注意しましょう)。

【カテゴリ】- WordPress管理画面カスタマイズ
【タグ】- functions.php, get_userdata(WordPress), WPプラグインなしで機能実装