管理者以外は、プラグイン、ユーザーなどのサブメニューを非表示にする
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。
できるだけシンプルにしたいので、管理画面の上の「更新」「ヘルプ」「表示オプション」「Wのロゴ」などを非表示にする。
remove_menuでPHPの読み込みをさせないようにできる場合は、そちらを優先。
remove_menuが使えない「ヘルプ」や「表示オプション」は、仕方ないのでCSSで非表示にしておく。
functions.php へ記述で、PHPを読み込ませない
//管理者以外の管理画面のアドミンバー内のメニュー非表示
if ( ! current_user_can( 'administrator' ) ) { function my_remove_adminmenu( $wp_admin_bar ) { $wp_admin_bar->remove_node('wp-logo'); //左上の「W」のロゴ //$wp_admin_bar->remove_menu( 'site-name' ); // サイト名 $wp_admin_bar->remove_menu( 'view-site' ); // サイト名 -> サイトを表示 $wp_admin_bar->remove_menu( 'dashboard' ); // サイト名 -> ダッシュボード (公開側) $wp_admin_bar->remove_menu( 'themes' ); // サイト名 -> テーマ (公開側) $wp_admin_bar->remove_menu( 'customize' ); // サイト名 -> カスタマイズ (公開側) //$wp_admin_bar->remove_menu( 'comments' ); // コメント $wp_admin_bar->remove_menu( 'updates' ); // 更新 $wp_admin_bar->remove_menu( 'view' ); // 投稿を表示 $wp_admin_bar->remove_menu( 'new-content' ); // 新規 $wp_admin_bar->remove_menu( 'new-post' ); // 新規 -> 投稿 $wp_admin_bar->remove_menu( 'new-media' ); // 新規 -> メディア $wp_admin_bar->remove_menu( 'new-link' ); // 新規 -> リンク $wp_admin_bar->remove_menu( 'new-page' ); // 新規 -> 固定ページ $wp_admin_bar->remove_menu( 'new-user' ); // 新規 -> ユーザー $wp_admin_bar->remove_menu( 'my-account' ); // マイアカウント $wp_admin_bar->remove_menu( 'user-info' ); // マイアカウント -> プロフィール $wp_admin_bar->remove_menu( 'edit-profile' ); // マイアカウント -> プロフィール編集 $wp_admin_bar->remove_menu( 'logout' ); // マイアカウント -> ログアウト $wp_admin_bar->remove_menu( 'search' ); // 検索 (公開側) $wp_admin_bar->remove_menu( 'bp-notifications' ); // BuddyPressの通知 } add_action( 'admin_bar_menu', 'my_remove_adminmenu', 1000 ); }
頭に「//」がついている場合は、コメントアウトされて非表示にならないので、上のコードで、例えば「コメント」も非表示にしたい場合は、
頭の
//$wp_admin_bar->remove_menu( 'comments' );
の//を消しておく。
functions.php へ記述でCSSで非表示にする。
//cssで、ヘルプや表示オプション、管理画面のフッターなどの不要なモノを見えなくする
if (!current_user_can('administrator')) { function my_admin_print_styles(){ echo '<style type="text/css">'; //投稿のエディタボタン関連 echo '#contextual-help-link-wrap,';//ヘルプ echo '#screen-options-link-wrap,';//表示オプション echo '#collapse-menu,';//管理画面のメニューを閉じるボタン echo '#wpfooter';//フッター echo '{display:none !important;}'; echo '</style>'; } add_action('admin_print_styles', 'my_admin_print_styles', 21); }
“管理者”でもメニューを削除したい場合は、一番上と一番下の
if (!current_user_can('administrator')) { }
を削除すればいい。
プラグインなどで勝手に追加されるメニューのIDを調べる方法
functions.phpへ
function check_post_label_id() { global $wp_admin_bar; var_dump($wp_admin_bar); } add_action( 'admin_menu', 'check_post_label_id' );
これを書いて、ページ(ソース)を見ると
array(数字) {[0]->string(数字)"メニューの単語"[1]=>string(数字)"スラッグ"......}
って感じの文字の羅列が見えるので、
“メニューの単語” の前にある array(数字) の数字が”メニューの単語”のIDになっている。