ワードプレスで特定の権限のユーザーに特定の管理画面のメニューだけを表示するPHPコードをご紹介します。このコードは寄稿者にダッシュボードを表示しないようにするなどの場合に使用できます。
寄稿者のワードプレス管理画面のメニューを ’メディア’,’投稿’,’プロフィール’ だけ残す
※このコードはテーマのfunctions.phpや作成中のプラグインに記載いただくことで動作いたします。
function change_contribuor_adminmenu () { $allowmenu = array("メディア",'投稿','プロフィール'); //表示許可するメニュー名 global $menu; if( current_user_can( 'contributor' ) ) { $newmenu = array(); foreach($menu as $m){ if(in_array($m[0],$allowmenu)){ $newmenu []=$m; } } $menu = $newmenu; } } add_action('admin_menu', 'change_contribuor_adminmenu',99);
コードの解説
このコードでは、admin_menuアクションでメニュー生成時に処理を割り込んで実行します。
$allowmenu = の配列に表示許可する親メニューの名称を記載します。
if( current_user_can( ‘contributor’ ) ) { で寄稿者の場合のみglobal $menu; のメニュー項目を再設定します。
if(in_array($m[0],$allowmenu)){ で配列にある名称の親メニューだけの新しいメニューの配列を創っていきます。
$menu = $newmenu; で最後にワードプレスが出力するメニューを置き換えします。
特定のユーザー権限のログイン後にプロフィールにリダイレクトする
上記のコードは、ログイン後にリダイレクトするダッシュボードをメニューから隠してしまっていますので、寄稿者がログインした場合のみプロフィール画面にリダイレクトしてみます。
function login_redirectcontributor( $redirect_to, $request, $user ){ if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( 'contributor', $user->roles )) { $redirect_to = admin_url("profile.php"); } } return $redirect_to; } add_filter( 'login_redirect', 'login_redirectcontributor', 99, 3 );
このコードではadd_filter( ‘login_redirect’で、ログイン後のリダイレクト先を寄稿者の場合のみプロフィール画面に変更していす。
参考になりましたら幸いです。
WordPress ワードプレスの管理画面のカスタマイズやバグの修正のご依頼・ご相談はWPドクターまでお気軽にお送りください