WordPressでオリジナルの権限

以下URLより転載
https://ysinc.co.jp/blog/wpauthority/

 

1.プラグインを有効にすると「User Role Editor」が追加されます

権限グループの追加

2.カスタム投稿タイプの編集のみ可能な権限グループを新規追加

新規権限グループの追加

今回は「MOVIE」というカスタム投稿タイプの編集のみ可能な権限グループを新規追加してみます。
コピー元にその他の権限グループを設定することで、選択した権限グループの権限情報を保持したまま追加できるので、「エディター(editor)」をコピー元にして権限グループを作成してみます。
ちなみに「エディター(editor)」は先述の「編集者」の権限のことです。

3.作成した「MOVIE編集者(editor_movie)の権限を編集してみます

作成した「MOVIE編集者(editor_movie)の権限を編集

新たに権限グループを作成できたので、作成した「MOVIE編集者(editor_movie)の権限を編集してみたいと思います。

カスタム投稿タイプの権限をみると、”delete_others_posts”、”edit_others_posts”など様々な権限が設定されていますが、それぞれの権限が「カスタム投稿タイプ」を削除したり編集したりできる権限であるため、 “MOVIE”のみを削除したり編集したりできる権限を作成する必要があります。

4.function.phpを編集

  1. // 付与する権限を用意
  2. $capabilities = array(
  3. // 自分の投稿を編集する権限
  4. ‘edit_posts’ => ‘edit_movies’,
  5. // 他のユーザーの投稿を編集する権限
  6. ‘edit_others_posts’ => ‘edit_others_movies’,
  7. // 投稿を公開する権限
  8. ‘publish_posts’ => ‘publish_movies’,
  9. // プライベート投稿を閲覧する権限
  10. ‘read_private_posts’ => ‘read_private_movies’,
  11. // 自分の投稿を削除する権限
  12. ‘delete_posts’ => ‘delete_movies’,
  13. // プライベート投稿を削除する権限
  14. ‘delete_private_posts’ => ‘delete_private_movies’,
  15. // 公開済み投稿を削除する権限
  16. ‘delete_published_posts’ => ‘delete_published_movies’,
  17. // 他のユーザーの投稿を削除する権限
  18. ‘delete_others_posts’ => ‘delete_others_movies’,
  19. // プライベート投稿を編集する権限
  20. ‘edit_private_posts’ => ‘edit_private_movies’,
  21. // 公開済みの投稿を編集する権限
  22. ‘edit_published_posts’ => ‘edit_published_movies’,
  23. );

投稿タイプ作成時に記述したregister_post_type関数に以下を記述します

  1. // カスタム投稿作成時に権限グループとその権限を設定
  2. register_post_type( ‘movie’, array(
  3. ‘capability_type’ => ‘movie’,
  4. ‘capabilities’ => $capabilities
  5. ) );

併せてカスタム投稿タイプ作成時に記述したregister_post_type関数に以下のように記述します。 capability_typeはカスタム投稿タイプ名、capabilitiesには先ほど定義した$capabilitiesを記述しています。

カスタム投稿タイプ「MOVIE」に固有の権限を設定するためにfunction.phpで以下のように記述します。
元々設定されているカスタム投稿タイプを操作する権限の名称を対象のカスタム投稿において置き換えることができます。
今回は各権限の末尾”posts”を”movies”に設定してみます。

5.「MOVIE」のみ、設定した権限名に変わっていることを確認します

改めてUser Role Editorの画面を見てみるとカスタム投稿タイプ「MOVIE」のみ、設定した権限名に変わっていることがわかります。

6.必要に応じて権限のチェックボックスを変更

あとは必要に応じて、権限のチェックボックスを変更しましょう。

 

7.「MOVIE」のカスタム投稿の編集を可、カスタム投稿の編集を不可に

権限を変更

今回作成した「MOVIE編集者」の権限グループでは「MOVIE」のカスタム投稿の編集を可にし、他のカスタム投稿の編集を不可にしたいため以下のように変更してみます。

8.MOVIEのみを編集できるようになりました!!

MOVIEのみを編集できるようになりました

「MOVIE編集者」の権限グループが設定されているユーザでログインしてみると、このように他のカスタム投稿(BLOG)がメニューに表示されなくなり、MOVIEのみを編集できるようになりました。