【WP】寄稿者権限でも画像のアップロードを許可する

【WP】寄稿者権限でも画像のアップロードを許可する

記事は書けるけど、その記事を公開する権限は持っていない「寄稿者権限」。複数人で記事を書いていて、公開する前に内容のチェックを入れたいという運用ケースなどにとっても便利ですよね。ですが、寄稿者権限だと、なんと投稿画面に『メディアを追加』が無くて、画像のアップロードができないのです!えー、なんだそれ。

カテゴリの親子階層がどんどん崩れたりと、時折「それ必要なの?」という機能をちょこちょこ仕込んでくる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');
}