管理者以外は、プラグイン、ユーザーなどのメニューを非表示にする
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。
管理者以外の、編集者や投稿者には、非表示にしておきたいメニューがある。
ついでに、プラグインで追加されるメニューも、非表示にしたい。
functions.php へ記述
//管理画面の左のメニュー非表示
if (!current_user_can('administrator')) { function remove_menus() { remove_menu_page('index.php'); // ダッシュボード remove_menu_page('separator1'); // セパレータ1 // remove_menu_page('edit.php'); // 投稿 // remove_menu_page('upload.php'); // メディア remove_menu_page('link-manager.php'); // リンク // remove_menu_page('edit.php?post_type=page'); // 固定ページ // remove_menu_page('edit-comments.php'); // コメント remove_menu_page('separator2'); // セパレータ2 remove_menu_page('themes.php'); // 外観 remove_menu_page('plugins.php'); // プラグイン // remove_menu_page('users.php'); // ユーザー remove_menu_page('tools.php'); // ツール remove_menu_page('wpcf7');//plug-in contact form7 // remove_menu_page('options-general.php'); // 設定 // remove_menu_page('profile.php'); // プロフィール(管理者以外のユーザー用) } add_action('admin_menu', 'remove_menus'); }
「//」を頭につけると、コメントアウトなので、メニューからは削除されない。
上の例でいくと、例えば、「ユーザー」も非表示にしたいなら、
// remove_menu_page('users.php'); // ユーザー
↓
remove_menu_page('users.php'); // ユーザー
と、頭の//を削除すればいい。
プラグインでアドミンバー(上)追加されたメニューを非表示にする方法
プラグインで追加されたメニューを削除するための引数(例えば、wpcf7 みたいな)を確認したいのであれば、
管理バーに追加されたメニューの場合は
global $wp_admin_bar;
の直後に
var_dump( $wp_admin_bar );
と記入したら見えるので、確認できる。
なお、サイドに追加されたメニューの場合は、別途
global $menu; var_dump( $menu );
と記入。
プラグインなどで勝手に追加されるメニューのIDを調べる方法
<管理バーに追加されたメニューのID確認>
functions.phpへ
function check_adminbar_id() { global $wp_admin_bar; var_dump($wp_admin_bar); } add_action( 'admin_menu', 'check_adminbar_id' );
<サイドに追加されたメニューのID確認>
functions.phpへ
function check_sidemenu_id() { global $menu; var_dump( $menu ); } add_action( 'admin_menu', 'check_sidemenu_id' );
これらを書いて、ページ(ソース)を見ると
array(数字) {[0]->string(数字)"メニューの単語"[1]=>string(数字)"スラッグ"......}
って感じの文字の羅列が見えるので、
“メニューの単語” の前にある array(数字) の数字が”メニューの単語”のIDになっている。
引数が分かれば、
remove_menu_page('調べた引数');
で非表示にできる。