最近、WordPressの管理画面にある左メニューを非表示にする要望がありました。
たまに設定するのに、忘れてしまい、検索してしまうので、自分用のメモで残します。
まず、今回は、管理者以外の左メニューを投稿のみにするという事で、以下をfunctions.phpに追加します。
function remove_menus () {
if (!current_user_can('administrator')) {
global $menu;
global $submenu;
unset($menu[20]); // 固定ページ非表示
unset($menu[25]); // コメント非表示
unset($menu[15]); // リンク
unset($menu[26]); // お問合わせ非表示
unset($menu[70]); // プロフィール非表示
unset($menu[75]); // ツール非表示
unset($menu[80]); // 設定非表示
}
}
add_action('admin_menu', 'remove_menus');
番号は、設定により変わると思います。
カスタム投稿やお問い合わせが消えない場合は、下記のコードを、functions.phpに差し替えて、MENUの番号を調べます。
※上記のコードに追記すると、エラーになる場合があります。
function remove_menus () {
global $menu;
var_dump($menu);
}
add_action('admin_menu', 'remove_menus');
そうすると、posttypeと番号が表示されます。
今回、カスタム投稿のレビューというメニューが消えなかったので調べます。
今回は、日本語メニューなので、ページ内のレビューを検索します。
レビューが見つかりました。そのレビューの前にある、arrayが目印です。
今回の例、レビューでいうと、[7]=> arrayと表示されていますが、
[7]がメニューの番号になります。
先ほどのコードを削除し、unset($menu[7]);を追加したものに 差し替えれば、メニューから消えました。
function remove_menus () {
if (!current_user_can('administrator')) { //管理者ではない場合
global $menu;
global $submenu;
unset($menu[7]);
unset($menu[20]); // 固定ページ非表示
unset($menu[25]); // コメント非表示
unset($menu[15]); // リンク
unset($menu[26]); // お問合わせ非表示
unset($menu[70]); // プロフィール非表示
unset($menu[75]); // ツール非表示
unset($menu[80]); // 設定非表示
}
}
add_action('admin_menu', 'remove_menus');
下記が参考になりました。
https://qiita.com/konweb/items/5483efbe87087eff5cc8
管理者以外で画面左メニューからJetpackを非表示にする場合は下記を記載します。
add_action(‘jetpack_admin_menu’, ‘hide_jetpack’);
function hide_jetpack() { if ( !current_user_can('level_10') ) { remove_menu_page( 'jetpack' ); } }