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




