ワードプレスの寄稿者にも画像アップロードを許可し寄稿者にメディア,投稿,プロフィールだけを管理画面で表示するPHPコードをご紹介いたします。

ワードプレスの寄稿者

ワードプレスには寄稿者というユーザーの属性があります。このユーザーはサイトにログインして投稿を追加できますが、権限が限定されています。

ただ、テーマの変更やプラグインの追加変更はできないものの、画像もアップロードできないという使い勝手の悪い権限となっています。
寄稿者に画像アップロードを許可し、寄稿者の管理画面のメニューをメディア,投稿,プロフィールだけにするには下記のようにテーマのFunctions.phpに記載します。

if ( current_user_can('contributor')  ){

    add_action('admin_init', 'allow_contributor_uploads_images'); //寄稿者に画像アップロードを許可する
    add_action('admin_menu', 'limit_contributor_adminmenu'); //管理画面のメニューを限定
    add_filter('login_redirect', 'login_redirect_contributor'); //寄稿者はログイン後にプロフィール画面に移動する
    add_action('pre_get_posts', 'limit_contributor_posts'); //寄稿者の投稿のみ表示
    
}

function allow_contributor_uploads_images() {

     $contributor = get_role('contributor');
     $contributor->add_cap('upload_files');
     
}

function limit_contributor_adminmenu() {

    global $menu;
    $newmenu = array();
    $allowmenu = array("メディア","投稿","プロフィール");
    
    foreach($menu as $m){
        if(in_array($m[0],$allowmenu)){
            $newmenu []=$m;
        }
    }
    $menu = $newmenu;

}

function login_redirect_contributor(){

    return  admin_url("profile.php");
    
}

function limit_contributor_posts( $wp_query ) {
    
    if( is_admin() ) {
        $wp_query->set( 'author__in' , array( $current_user->ID ) );
    }
    
}

上記のコードは
if ( current_user_can(‘contributor’) ){ で寄稿者でログイン中の場合にのみadd_actionやadd_filterで下記の4つの機能を追加しています。

・寄稿者に画像アップロードを許可する
・管理画面のメニューを”メディア”,”投稿”,”プロフィール”に限定
・寄稿者はログイン後にプロフィール画面に移動する
・寄稿者の投稿のみ表示

任意の権限に画像アップロードの権限を与えるにはadd_cap関数を使用します。

$contributor->add_cap('upload_files');

管理画面のメニュー内容global $menu;を書き換えることによって不必要な管理前メニューを除外します。

login_redirect フィルタでプロファイル画面のURLを返し、ログイン後にプロファイル画面に移動するようにします。

$wp_query->set( ‘author__in’ で現在ログイン中の寄稿者のIDを指定することで寄稿者の投稿のみ表示します。

ご参考になりましたら幸いです。

WordPress ワードプレスのテーマやプラグインのPHPコーディングのご依頼・ご相談はWPドクターまでお気軽にお送りください