マメな人はバカであれ

バカなりに考えて、バカなりに行動します

技術的なことや、趣味的なことや、私生活的なことを書いてきます

User Role EditorとUser Access Managerで細かいアカウントの権限の振り分け

Wordpressのデフォルトの権限じゃ物足りない…
そんな時はUser Role EditorとUser Access Managerを使うことで
細かいアカウントの権限の振り分けができるようになっちゃうんです。

今回はwebのお話で、wordpressの話をします。

これは難しいっていうよりはめんどくさいっていうやつです。

要件としては 「複数の投稿タイプ(カスタム投稿タイプ)と複数の固定ページを各アカウントで管理したい。」

文字じゃわかりづらいですが、この話を聞いた時に「あぁ…もうめんどくさそうだ…」って思いましたね。

つまりどういうことか 例えば 投稿タイプが - A-type - B-type - C-type - D-type - E-type と5つあったとします。

固定ページが - A-Page - B-Page - C-Page - D-Page - E-Page - F-Page と6つあったとします。

こいつらを管理するアカウントが - Aさん - Bさん - Cさん と3つあったとします。

んで、これらアカウントが管理する投稿タイプと固定ページを振り分けます。

  • Aさん
  • Bさん
    • B-type
    • E-type
    • B-Page
    • E-Page
  • Cさん

となるわけですが、 「管理画面で上記の該当するものしか表示させたくない」というのです。

管理画面のサイドメニューで表示非表示であれば、

function remove_menus () {
    global $menu, $submenu; 

    unset($menu[2]); //ダッシュボード
    unset($menu[4]); //メニューの線1
    unset($menu[5]); //投稿

}
add_action('admin_menu', 'remove_menus');

上記の様にしたらよかったのですが、固定ページに関してはそうもいきませんでした。

普段使える権限グループは5つ

上位権限グループから

  • 管理者 Administrator
  • 編集者 Editor
  • 投稿者 Author
  • 寄稿者 Contributor
  • 購読者 Subscriber

となります。(最上位に特権管理者というのもあります) ただ、これではページごとに権限を振っている訳ではないのでこのままではダメです。

そんなんで 固定ページも権限を持っているアカウントにしか表示しないってのはプラグインしか方法がないかなって思いました。 (まぁ、他にも方法があったのかもしれないですが…)

使用したプラグイン

使ったのは2つのプラグイン - User Role Editor - User Access Manager

User Role Editorはユーザーのデフォルトの5つの権限グループに加えて新しい権限グループを作ることができます。 新しくできるだけではなく、細かく権限内容を分けることもできるのでとても便利です。

User Access Managerは権限グループを投稿タイプの記事や固定ページのコンテンツに、閲覧・書き込みを制限・制御することができます。 該当する権限グループだけが書き込み・閲覧が可能にできるようです。

この二つを用いて固定ページも制御します。

権限を制御してみます

まずはUser Role Editorを使って権限グループを作ります。 権限は色々指定ができますが、簡単に説明します。 (その前に[設定>User Role Editor]から「各権限を概説で表示する」と「非推奨の権限を表示」にチェックしておくと日本語になってかつもっと詳細に権限設定できる様になります)

f:id:sutobu000:20171128023135p:plain

権限グループを作るには、[ユーザー>User Role Editor]から編集ができます。

f:id:sutobu000:20171128023247p:plain

[権限グループの追加]から権限グループを追加することができますので、適当なIDと名前をつけて追加します。

(※補足:ここで、カスタム投稿タイプも権限ごとに振り分けたい場合には、該当する投稿タイプの[capability_type]をデフォルトの[post]から適当なものに変更するとカスタム投稿タイプも権限を振り分けることができる様になります。(例えばbooksとか))

新しい権限グループを作ったら、User Access Managerを開きます。

f:id:sutobu000:20171128023306p:plain

ユーザーグループ名などは適当なものを。 IP範囲なども指定ができますが今回は省きます。 [閲覧権限]には[Only group users]と[All Users]があり、このグループだけ閲覧ができるか誰でも閲覧ができるかが選ぶことができます。 (※補足:[Only group users]を選ぶと、どの権限も持たないユーザーも見れなくなりますので注意。) [書き込み権限]も[閲覧権限]と同様です。 [権限グループとの関連付け]ではこのユーザーグループに該当する権限グループを選択ができます。User Role Editorで作成した権限グループをここで選択します。

ユーザーの設定はこれで大体オッケー。 本題の固定ページを見てましょう。 この状態で固定ページを見るとこんな感じ。

f:id:sutobu000:20171128023333p:plain

アクセスという項目が追加されて[フルアクセス]ってあります。 フルアクセスというのは全権限から閲覧・書き込みが可能な状態です。 このフルアクセスを各権限グループに仕分けます。

f:id:sutobu000:20171128023351p:plain

固定ページの編集画面の右サイドメニューに[アクセス]という項目が増えています。 ここで該当する権限グループを選択して仕分けます。

f:id:sutobu000:20171128023406p:plain

仕分けたら上記の様になります。 これで該当するユーザーでログインすると以下の様な画面になれば、権限での仕分けが完了です。

f:id:sutobu000:20171128023421p:plain

長くなりましたが、これでも色々と説明は省いているのでわからないところはわからないかもしれないです。

ちなみに 案件ではユーザーが10以上 投稿タイプは20以上 固定ページは80以上 これを権限グループとユーザーグループで仕分けするというもので…

いやぁめんどくさかったです。

また次回こんな案件が来たらもっと簡単に仕分けられる方法があれば試してみたいと思います。

次回のweb記事のWP関連にしようかな…