WordPressの権限管理
2021年3月5日
ある程度の規模の組織の商用CMSであれば組織のチームや部署単位によってアカウントを作る、又は属人的にアカウントを作り、ページ又は項目の範囲や権限などを設定していく事が多いと思います。WordPress のデフォルトでは権限による制御が可能です。この記事では範囲の制御についてフォーカスして書いていこうと思います。
デフォルトの権限について
初期で権限のグループが設定されており、それらを使う形になります。ユーザー作成の際にセットでそのアカウントの権限グループを選択します。
購読者 | Subscriber | WordPressにログインすることができる |
寄稿者 | Contributor | レビュー待ちの投稿を作成できる。レビュー待ちになった投稿の公開は、編集者以上の権限グループのユーザーが行う。 |
投稿者 | Author | 投稿が可能、固定ページや他のユーザーが作成した投稿を編集することはできない。 |
編集者 | Editor | 投稿や固定ページ、カテゴリーなどを、他の人が作成した投稿を含めて編集ができる。テーマやプラグイン、ユーザー、サイト設定は編集できない。 |
管理者 | Administrator | トップレベルの権限グループですべての権限を持つ |
次に各ユーザーに対して関係のない項目(投稿や固定ページ、カスタム投稿など)をさわらせたくないというケースが出てくると思いますが、デフォルトでは設定ができません。
(例)Aという権限グループ(編集者)のユーザーにカスタム投稿(製品情報)を触らせたくないというケース
そう言う際は「サイドメニューの項目の非表示」または「新しい権限グループを作成しその権限グループに固有の権限を設定する」という方法をとります。
サイドメニューの項目の非表示
サイドメニューの非表示に関してはプラグインでも可能ですが、function.phpに記述する形でも可能です。
function.phpの記載例
function remove_menu() {
remove_menu_page( 'index.php' ); // ダッシュボード.
remove_menu_page( 'edit.php' ); // 投稿.
remove_menu_page( 'upload.php' ); // メディア.
remove_menu_page( 'edit.php?post_type=page' ); // 固定.
remove_menu_page( 'edit-comments.php' ); // コメント.
remove_menu_page( 'themes.php' ); // 外観.
remove_menu_page( 'plugins.php' ); // プラグイン.
remove_menu_page( 'users.php' ); // ユーザー.
remove_menu_page( 'tools.php' ); // ツール.
remove_menu_page( 'options-general.php' ); // 設定.
}
add_action( 'admin_menu', 'remove_menu', 999 );
プラグインを使う
上記のようなプラグインでもPHPを書かずに設定が行えます。
新しい権限グループを作成しその権限グループに固有の権限を設定する
おそらくCMSとしての本来の権限設定はこちらをイメージすると思います。ただメニューを非表示するだけであれば管理URLさえわかれば編集できてしまうので本来の権限設定とは言えません。
上記のような新しい権限グループを作成し個別の権限を設定する場合は「User Role Editor」というプラグインを使用します。
こちらのプラグインで「新しい権限グループ」の作成ができ、かつ投稿や固定ページ、カスタム投稿などの細かな権限を設定することが可能になります。
User Role Editorの問題点
使ってみて感じたUser Role Editorの問題点も記載しておきます。
- WP本体のアップデート時の影響が少なからずある
- プラグインで作成されるカスタム投稿の設定部分などの権限管理が行えないこともありメニューにその部分だけ表示されてしまう
- 固定ページのユーザー切り替えで新しく作った権限グループに設定したユーザーが出てこない
上記のような問題があります。
「1」はそもそもWordpressでは複雑な権限設定は出来ないという前提で開発を進める。
「2」はサイドメニューの項目の非表示との合わせ技で対応する。
「3」は先に既存の「編集者」などの権限グループにして割り振りをしてから新しい権限グループに変更するなどの対処をする。
というような対策で進める形になりそうです。あまりすっきりとした結末になりませんでしたが、Wordpressの権限管理はあまりエンタープライズには向いてないという印象を個人的には持ちました。