WordPressにはユーザー権限というものがあり、それによって利用できる機能が一部制限されたりしているのですが、その制限されている機能を開放したり逆に開放されている機能を制限するといったユーザー権限毎の機能を任意で変更する方法です。
この手のことをやる場合はプラグインを使用する方法を目にすることが多く、たしかにその方が楽にできるんですが、ほんの少し変更したいぐらいならわざわざプラグイン使わないでもできないか調べたらCodexで見かけたので試してみました。
機能を追加する
今回は例として、デフォルトではファイルアップロードに関して権限を与えられていない「寄稿者(Contributor)」でもメディアの追加をできるようにしてみます。
実装にはfunctions.php
へ下記のように記述します。
function add_theme_caps(){
$role = get_role( 'contributor' );
$role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );
まずget_role()
で権限を指定し、今回は「寄稿者」に対してなのでcontributor
を記述します。
ちなみに、それぞれ権限の指定方法は以下のように記述します。
- 管理者: administrator
- 編集 : editor
- 投稿者: author
- 寄稿者: contributor
- 購読者: subscriber
次にadd_cap()
にどの機能を開放するかを記述します。
今回は「ファイルアップロード」の機能を使えるようにしたいのでupload_files
を記述します。
それぞれの機能をどのように記述すればいいのかは後述するCodexで確認できます。
イメージはそれぞれ権限が「寄稿者」時の管理画面をキャプチャしたもので、先ほどのコードを記述後に管理画面を確認するとイメージ右側のように「寄稿者」の権限でもサイドメニューにメディアが追加され、投稿画面上にもボタンが追加されてファイルアップロードができるようになります。
権限周りの詳細を知りたい場合や各機能の記述方法などは以下より確認できます。
機能を無効にする
こちらは逆にデフォルトでは使用できる機能を無効にさせたい時に使える方法になります。
また、先ほどは機能を追加しましたが、それをやはり無効にしたい(元に戻したい)という時もこちらを記述することで無効にできます。
普段このようなカスタマイズをする場合は単純にその記述を消せば無効になるということが多いですが、これに関してはfunctions.php
から記述を消すだけでは無効にならずに追加されたままの状態になってしまうので、一度追加してしまったものは以下を記述して無効にする必要があります。
今回は例として、先ほど「寄稿者」の権限で使用できるようにしたファイルアップロード機能を無効にしてみます。
実装にはfunctions.php
へ下記のように記述します。
function remove_theme_caps(){
$role = get_role( 'contributor' );
$role->remove_cap( 'upload_files' );
}
add_action( 'admin_init', 'remove_theme_caps' );
追加時の記述とほぼ同じ感じで、まずget_role()
で権限を指定し、あとはremove_cap()
に無効にしたい機能を記述することで指定した権限の指定した機能を無効化することができます。
プラグインを使用する
プラグインを使わない方法を書いといてアレですが、冒頭にも書いたように権限毎の機能を任意で変更したい場合は、以下のようなプラグインを使うことで簡単に設定することができます。
いずれも今回紹介したような各権限の機能を有効化・無効化指定できたり、他にも特定の権限で投稿画面などのウィジェットの表示・非表示等も設定できるものもあるので、functions.php
をあまり触りたくない人や手っ取り早くやりたいという人、あとは全ての権限に関してかなり細かくカスタマイズしたい場合などはやはりプラグインが便利だと思います。
プラグインはほとんど英字表記ではありますが、基本的にはチェックボックスで選択していくだけで変更できるような感じなので特に悩むことなく設定できると思いますし、英語が苦手な人の場合でも検索してみるとプラグインの使用方法を説明している国内エントリーなども結構あるようなので、それらを参考にして容易にカスタマイズできると思います。