組織などで記事を公開するときに上長の承認が必要な場合、権限設定にちょっと工夫が必要。
記事を書く人・・・「寄稿者」権限
承認する人・・・「編集者」または「管理者」権限
こうすることで、寄稿者が記事を書いても「レビュー待ち」となり、公開権限を持つ編集者(または管理者)が公開するまで非公開になります。
ここで問題となるのは、寄稿者にはメディアアップロードの権限がないこと。つまる写真のアップロードができません。
目次
寄稿者権限でもメディアアップロードができるようにする
寄稿者権限でもメディアアップロードができるようにするには、テーマフォルダ内のfunctions.phpに以下を追加します。
0 1 2 3 4 5 6 7 8 9 10 |
//functions.php //寄稿者権限でもメディアアップロードができるようにする function allow_contributor_uploads() { $contributor = get_role('contributor'); $contributor->add_cap('upload_files'); } if ( current_user_can('contributor') && !current_user_can('upload_files') ){ add_action('admin_init', 'allow_contributor_uploads'); } |
allow_contributor_uploads()
get_role(‘contributor’) で寄稿者(contributor)の権限定義(何ができるか)を取得し、add_cap(‘upload_files’) でファイルのアップロード権限を付与します。
それで、上記の function が実行されるのが、ログインしているユーザー(カレントユーザー / current user)の権限が寄稿者で、なおかつ、ファイルのアップロード権限がないとき。
寄稿者権限でも公開した記事を編集できるようにする
もうひとつ。寄稿者権限では、自分の書いた記事であっても、公開された記事を編集することができません。
公開後も編集できるようにするには、同じく functions.php に以下を追加します。
0 1 2 3 4 5 6 7 8 9 |
//寄稿者権限でも公開した記事を編集できるようにする function allow_contributor_edit_published_posts() { $contributor = get_role('contributor'); $contributor->add_cap('edit_published_posts'); } if ( current_user_can('contributor') && !current_user_can('edit_published_posts') ){ add_action('admin_init', 'allow_contributor_edit_published_posts'); } |
allow_contributor_edit_published_posts()
こちらも寄稿者権限定義を取得して、add_cap(‘edit_published_posts’) で、公開済み投稿の編集権限を付与します。
実行されるタイミングは、カレントユーザーが寄稿者権限、且つ、edit_published_posts(公開済み投稿の編集権限)を持っていないとき。
権限付与(あるいは削除)の注意事項
一度権限を付与した場合、反対の操作(つまり、権限の削除)をしない限り、付与した権限は生き続ける。
テーマテンプレートは変えても、リセットされないので注意。(権限削除も同様)
なので、元に戻すときは remove_cap(権限)で削除する必要がある。