16
MAY
ウェブTHURSDAY 2024 / 5 / 16
管理画面からメニューの削除をする<wordpress>
Text by Shinji Sato
お疲れ様です。
今日は管理画面のメニューから特定の項目のみ削除する方法をご紹介します。
使うのは「admin_head」というアクションフックを使用します。
まずはシンプルなものから
<?php function my_admin_head () { if(!is_admin()){ return; } remove_menu_page( 'themes.php' );// 外観 remove_menu_page('edit-comments.php');// コメント remove_menu_page( 'tools.php' );// ツール remove_menu_page( 'options-general.php' );// 設定 } add_action('admin_head', 'my_admin_head');
このように「remove_menu_page」を使うと簡単に消すことができます。
ただこの方法だと「固定ページ」など一部のものは消すことができません。
消したい場合はstyleタグを入れて対応しましょう。
<?php function my_admin_head () { if(!is_admin()){ return; } remove_menu_page( 'themes.php' );// 外観 remove_menu_page('edit-comments.php');// コメント remove_menu_page( 'tools.php' );// ツール remove_menu_page( 'options-general.php' );// 設定 ob_start(); ?> <style> #adminmenu #menu-pages{ display:none!important; } </style> <?php echo ob_get_clean(); } add_action('admin_head', 'my_admin_head');
これで固定ページを消すことができました。
同じやり方でカスタム投稿タイプなども消すことが可能です。
それではもう一声、管理者以外のみメニューを消すパターンもやってみましょう。
<?php function my_admin_head () { if(!is_admin()){ return; } $user = wp_get_current_user(); foreach($user->roles as $role){ if($role === 'administrator'){ return; } } remove_menu_page( 'themes.php' );// 外観 remove_menu_page('edit-comments.php');// コメント remove_menu_page( 'tools.php' );// ツール remove_menu_page( 'options-general.php' );// 設定 ob_start(); ?> <style> #adminmenu #menu-pages{ display:none!important; } </style> <?php echo ob_get_clean(); } add_action('admin_head', 'my_admin_head');
応用すれば特定の権限のみに合わせることも簡単ですので用途に合わせて使い分けましょう。