• カミナリツイッターカミナリtwitter
  • カミナリフェイスブックカミナリfacebook
  • カミナリインスタグラムカミナリinstagram

山陰の情報を発信するカミナリ

ナビ

16

MAY

ウェブTHURSDAY 2024 / 5 / 16

管理画面からメニューの削除をする<wordpress>

Text by Shinji Sato

  • カミナリツイッターカミナリtwitter
  • カミナリフェイスブックカミナリfacebook

お疲れ様です。

今日は管理画面のメニューから特定の項目のみ削除する方法をご紹介します。

使うのは「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');

応用すれば特定の権限のみに合わせることも簡単ですので用途に合わせて使い分けましょう。

佐藤真司隠しプロフィール画像

TEXT by

佐藤 真司さとうしんじ)

1990年 鳥取県米子市生まれ。
株式会社マジックワード フロントエンドエンジニア。

この人が書いた他の記事を読む