wordpressでのスマホ対応webサイト制作・wpプラグイン・PHPプログラム・SNS活用・ 動画・bgmやテーマ曲アレンジまで考えるコラム!

【WP管理画面カスタマイズ】ユーザーページに項目追加&そのフィールドを一覧に出す方法

   

こんにちは、管理人@SS_mshpです。


今回は、以前お仕事で少しやったんですが、『会員・顧客』や『複数執筆者』など、複数のユーザーが運営に絡む状況で使える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)

あとがき・まとめ

  • サイトの内容によっては、ユーザーの一覧ページに独自の項目を作って確認ができるとラク
  • ユーザーの詳細ページに、項目追加は、user_contactmethodsフック・新規登録ページでも入力できるようには user_new_formフック
  • 一覧に表示するにはmanage_users_columnsフック

まとめるとこんな形でしょうか。記事一覧同様、ユーザーが多くかかわる形態のサイトでは、項目追加ができると、運営がラクになる可能性もあるので、ぜひご検討ください。
中には、プラグインがこれらのフックを使って、カラムを作ってくれるものもあります(干渉に注意しましょう)。

*アトリエSS・web制作サービスページに移動します。webリニューアル・ロゴ・記事・wordpress化などでお力添えできます。

【カテゴリ】 - WordPress管理画面カスタマイズ
【タグ】 - , ,

  関連記事