ワードプレスの寄稿者にも画像アップロードを許可し寄稿者にメディア,投稿,プロフィールだけを管理画面で表示する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ドクターまでお気軽にお送りください