[WordPress] 別のユーザーグループが投稿した記事を編集出来ないようにする
ユーザーグループを作成し、別のユーザーグループが作成した記事を別のユーザーグループが編集出来ないように設定してみた。
カスタムユーザー権限の作成
User Role Editorのプラグインを使用する。
https://ja.wordpress.org/plugins/user-role-editor/
インストール、有効化するとユーザーのメニュー内に、User Role Editorの項目が追加される。
右側メニュー内のAdd Role
をクリックし、新しく権限を追加する。
Role name(ID)は英数字で設定しておく。
Display Role Nameはわかりやすいように日本語でも大丈夫。
Make copy of で、コピー元の権限があれば選択する。
今回は投稿者の権限を利用する事にする。
もう一つ、white(白組)という権限も作成しておく。
ユーザーグループの設定
User Access Managerのプラグインを使用する。
https://ja.wordpress.org/plugins/user-access-manager/
インストール、有効化するとユーザーのメニュー内に、UAMというメニューが追加される。
メニューをクリックするとグループが一つもない状態であれば、Add user groupが表示される状態となる。
なので、ここでユーザーグループを作成する。
User group name
はグループ名だが、日本語でも問題なかった。
User group description
はグループの説明。
IP range
はこのグループに属するユーザーのアクセスIPを制限する際に使用する。
Read access
は、このグループが投稿した記事をだれが閲覧できるか、を設定する。
All
にすれば誰でも閲覧可能。
only group users
にすればこのユーザーグループのユーザーしか閲覧が出来ない。
今回は閲覧は全員可能としたかったので、allにした。
Write access
は、この投稿した記事をだれが編集できるか、を設定する。
内容はReadと同じ。
今回は正にここが肝で、作成したユーザーグループ以外のユーザーには編集させないので、 only group users
とした。
Role affiliation
は、このユーザーグループに属する権限の設定。
ここを設定するとユーザーを作成する際に選んだ権限に属するユーザーグループは必ず選ばれるようになる。
要するに、権限を選べば自動でユーザーグループも指定されるので、設定しておいた方が楽。
ユーザーグループに入れるユーザーを個別に選びたい場合は外しておけばいいと思う。
同じく白組も登録しておく。
ユーザーの追加
ユーザーを追加する。
今回の環境が色々カスタマイズしているため未確認だけど、どうやら新規登録の際にはユーザーグループを選択する項目はなさそう。
とはいえ、権限を選べばグループも設定されるようになっているので問題はなし。
(権限ロールで、作成した「白組」の権限を選択するのを忘れないように)
同様に赤組ユーザーも追加する。
以下のように、権限ロールを設定しただけで、ユーザーグループも設定されていることがわかる。
記事の投稿
記事を投稿する。
この時にその記事を編集可能なユーザーグループを選択するのだけど、
ユーザーグループに所属しているユーザーで記事を作成しようとするとユーザーグループ選択の項目が表示されない。
なので、User Access Managerの設定画面で以下の項目を Yes
に変更する。
UAM –> Setting –> Authors settings –> Authors can add content to their own groups
右側の列に以下のようなボックスが表示される。
記事作成の際に、チェックを入れるのを忘れないようにする。
(忘れてしまうとだれでも編集可能な記事となってしまう)
管理者権限でログインして一覧を見ると以下のような状況だが、
例えば白組のユーザーでログインして見ると以下のように白組に設定した記事のみが表示される。
まとめ
これで目的は達成出来た。
記事投稿する際にグループを選択しないといけない、など少し運用がめんどうになりそうな気配はあるが、
カスタムでここを触るのは現状不可能そうなので、プラグインでの対応しかなさそう。
参考
WordPress会員制サイト構築 その7 User Access Manager|オレオレWebサービス指南書! 自分のチカラでサーバー世界を自由に創造するから面白い
【WordPress】ユーザーごとに投稿ページ・固定ページの閲覧権限を設定する|長妻紀之のブログ