[wp]ユーザー情報を追加したり一括登録する方法

あまり使わないけど。

活用シーンとか完成イメージ

ブログを複数人で書くことになった。各記事で著者がわかるようにしたい。更に、著者別の記事一覧も作りたい。

単純に著者の紹介を追加するだけならカスタムフィールドで良いんだけど、著者別の紐づけが必要になってくるとカスタムフィールドのソートはめんどくさい。タグで振り分けるのも案としてはある。しかし不定期に著者情報を追加したり変更する可能性を考えると、管理の手間がすごいことになる。

だからWPユーザーを追加して、その情報を表示させたら良いよねという感じ。いや、そもそもそれでいいだろと、こっちのが真っ当だろという話ではあるんだけど、著者が50人を超えて、全部作るのもだるいし、それぞれにアカウントを渡すのはめんどくさいだろってことがあって。そこがネックだった。

上位権限のユーザーで記事を作れば著者の切り替えできるじゃん、実務的にアカウント1個で済むじゃん。アカウントをいっぱい作るにしてもメールアドレスの重複を許可する方法もあったよな。ユーザー情報も拡張できるし、何とかなりそうじゃんねという感じに落ち着いた。

使用プラグイン

必要なものをインストールしておく。

一部のプラグインがかなり古いけど現行のWPで使えてるのでよしとする。古いプラグインはPHPとかの大型アップデートで使えなくなったりするのでそれなりにリスクがあることは理解しておく。似たようなプラグインもあるだろうからそちらを使うのもいいけど、有名どころじゃなかったらある意味それもリスクかもしれない。

ユーザー登録のメールアドレスの重複を許可する。

Allow Multiple Accounts
Allow multiple user accounts to be created, registered, and updated having the same email address.

ユーザーのアバター(画像)を登録できるようにする。

元々入ってる「Gravatar」は使わない。WEBサイトを超えた厳密なユーザー登録をする必要はないので、WP内のユーザー情報を拡張するに留める。

WP User Avatars
Allow registered users to upload & select their own avatars.

CSVでユーザーを一括登録する。

こっちはシンプルでわかりやすい。

Import Users from CSV
Import users from a CSV into WordPress

こっちは更新が頻繁でできることが多い。

Import and export users and customers
Import and export users and customers using CSV files including custom user meta and roles. Integrations with lots of ot...

ユーザーの権限を管理する(任意)。

執筆者に不要な部分を勝手にいじられるのは不本意なので権限グループを用意したい、という場合に便利。

User Role Editor
User Role Editor WordPress プラグインはユーザーの種類と権限を簡単に変更できます。WordPress ユーザーの種類と権限の 編集/追加/削除。

メールアドレス重複の許可

「ユーザー>Multiple Accounts」で「Allow multiple accounts for everyone?」にチェックを入れて保存。他は空欄で大丈夫。

ユーザーごとにメールアドレスがあるなら良いけど、これのためにいちいち用意するのはめんどくさいし、執筆に限定するならメールで送ることなんて何もないし、ということで1つのメールアドレスを使い回す。メールアドレスを登録しない方法もあるけど、まあ、最低限何かと紐づけたほうがいいのかなと。

ユーザーの一括登録

csvで作成してインポートする手順になる。

どちらも「UTF-8」のカンマ区切りで作る。文字コードが違ってると全角のデータが登録されなかったりする。

「Import Users from CSV」の場合

「ユーザー>Import From CSV」の「CSV file」にサンプルファイルがあるし、自作しても良い。サンプルは最低限の項目しかないので、権限の指定とかをやっていきたい場合は項目を足さなければいけない。

こんな感じ。

“import_utf8.csv” をダウンロード

import_utf8.csv – 354 回のダウンロード – 394.00 B

作ったら「ユーザー>Import From CSV」でCSVファイルをインポート。

間違えたら削除すればいいし、上書きもできるのでそこまでシビアに考えなくて良い。

上書きする場合は「Users update」にチェックを入れる

「Import and export users and customers」の場合

「ツール>ユーザーと顧客のインポートとエクスポート」に行く。「エクスポート」タブでCSVをダウンロードする。項目が揃ってるので既存データを参考に入力する。作ったCSVは「インポート」タブからインポートする。

「Allow Multiple Accounts」でメールアドレスの重複を有効化していてもこっちはこっちでセキュリティが働いているので、インポート時に設定が必要。「複数のアカウントの互換性を許可する」の「異なるユーザーに繰り返しメールが届きましたか ?」で「許可」を選択

既存のユーザー情報を更新する場合は「ユーザーを更新」の「既存のユーザーを更新しますか ?」を「はい」にする

難儀する点

CSVから画像を登録できない。登録済みの中身を覗いたら画像のURLじゃなくて配列で色々登録されていた。これを手打ちするのは無理があるんで、管理画面から個別に登録するしかない。

ユーザー情報の項目追加

下準備

項目自体はcsvでの追加で済むんだけど、管理画面のユーザーページ上で見たり編集したりするにはfunctions.phpで項目の追加が必要になる。

//ユーザー情報項目追加
function my_user_meta($userData)
{
	//追加する項目
	$userData['job'] = '職種';
	$userData['adr'] = '住所';
	$userData['tel'] = '電話番号';

	return $userData;
}
add_filter('user_contactmethods', 'my_user_meta', 10, 1);

こんな感じで増やせる。ユーザーページを見たら項目が増えてる事がわかる。

csvから登録する際、「job」とかがキーになる。既存のものと重複しないように注意。

「Import Users from CSV」の場合

項目に「job」「adr」「tel」を追加して、ユーザー情報の行に入力。項目の順番に規則はないので好きなところに追加する。

「Import and export users and customers」の場合

項目に「job」「adr」「tel」を追加して、ユーザー情報の行に入力。項目の順番に規則はないので好きなところに追加する。

ここで問題なのが、追加した項目がエクスポートしたcsvに追加されていない点。エクスポートタブの「Columns」ではエクスポートする項目が指定できるんだけど、ここに追加しても値が出力されなかった。だけど「メタキー」タブでは追加されていて、マジでなんなんですかっていう。インポートで上書きとか新規作成とか色々した後に昼休憩で間を空けて試したら追加されてた。何なんでしょうね。どっかでキャッシュとかが悪さをしたのかもしれない。

登録自体は問題なく動作するので、エクスポート周りは追々チェックする感じでいるのが精神衛生的にいい。よっぽど嫌だったら「Import Users from CSV」でそもそもの機能を制限してしまったほうがまし。

余談として「追加プロフィール欄」タブでチェックを入れると存在する項目が全て表示されるようになる。だけど多すぎてわけわからんくなるとか、スクロールがめんどいとか、そんな感じになるので使わないほうがいいと思う。

input[type=”text”]以外の入力形式

軽く調べた程度だけど、タグを指定する都合のいいものはなかった。テキストエリアとかチェックボックスとか作りたい場合はこちらを参考に。

[WordPress]ユーザーのプロフィールに任意のフィールドを追加する
タイトルの通り、WordPressでユーザーのプロフィールに任意のフィールドを追加する方法です。 サンプルとし

他にもいくつか記事は出てきたんだけど古すぎたり動かなかったりエラーを吐いたりしてた。これは2022.06時点のwpで動く。

権限グループを管理する

「User Role Editor」を使うと既存の権限グループの仕様をいじったり、新たに権限グループを作ったりできる。例えば、「特定のカスタム投稿だけ操作する権限」も作れる。だけど、地味に罠もある。

CPT-UIを使ってる手前、こちらの記事がすべてカバーしてくれた。

CPT UIの「権限タイプ」が何なのかUser Role Editorを使うと分かる - ゆうきのせかい
Custom Post Type UIの「権限タイプ」とは何なのか?User Role Editorを使ったら分かりました。

記事の通りで、要は該当のカスタム投稿に関わる部分だけチェックの入った権限を作れば良いんだけど、それをやってしまうとタクソノミー、メディア、投稿にかかわるプラグインが使えなかったりする。メディアが投稿やら固定ページ全てに掛かるものというのは理解できるけど、タクソノミー関係が投稿のタグ、カテゴリでまとめられているっていう。

カスタム投稿周りを整えると最低限でもこうなる

しっかり作るとなるとfunctions.phpで調整する必要が出てくるので、どこまで厳密にやっていくかを決めておいた方がいい。

コメント

タイトルとURLをコピーしました