記事は書けるけど、その記事を公開する権限は持っていない「寄稿者権限」。複数人で記事を書いていて、公開する前に内容のチェックを入れたいという運用ケースなどにとっても便利ですよね。ですが、寄稿者権限だと、なんと投稿画面に『メディアを追加』が無くて、画像のアップロードができないのです!えー、なんだそれ。
カテゴリの親子階層がどんどん崩れたりと、時折「それ必要なの?」という機能をちょこちょこ仕込んでくるWordPressさんです。でもでも、functions.phpにちょっとおまじないを書くと、問題をサクッと解決してくれるのもWordPressさんのすごいところ!『寄稿者権限だと“メディアを追加”が表示されない問題』も、functions.phpに下記をコピペすると、サクッと解決できます。
function filter_user_has_cap( $allcaps, $caps, $args, $instance ) {
$allcaps['upload_files'] = true;
return $allcaps;
};
add_filter( 'user_has_cap', 'filter_user_has_cap', 10, 4 );
ネットで検索すると、add_filterを使わない下記の方法が一番最初にヒットしたのですが、こちらの方法だとDBの値を直接書き換えてしまうようで、上記のadd_filterを利用した方法の方がおすすめです。
if ( current_user_can('contributor') && !current_user_can('upload_files') ){
add_action('admin_init', 'allow_contributor_uploads');
}
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor->add_cap('upload_files');
}