ワードプレスで管理画面の左メニューと、上部固定管理バーから任意の項目を任意の権限のユーザーから隠す方法(PHPコード)をご紹介します。このコードはテーマのFunctions.phpに記載いただくと動作します。

上部固定管理バーから任意の項目を任意の権限のユーザーから隠す

コードは下記のようになります。隠したくない項目は行頭に//(コメントアウト)を付けると無効化されて表示されるようになります。

//管理バーの項目を追加・削除
function set_remove_admin_bar_menu($wp_admin_bar)
{

    if (!current_user_can('administrator')) { //管理者でない場合
        $wp_admin_bar->remove_menu( 'wp-logo' );      // 左上WPロゴ
        $wp_admin_bar->remove_menu( 'site-name' );    // サイト名
        $wp_admin_bar->remove_menu( 'view-site' );    // サイト名 → サイトを表示
        $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( 'dashboard' );    // サイト名 → ダッシュボード 
        $wp_admin_bar->remove_menu('themes');       // サイト名 → テーマ
        $wp_admin_bar->remove_menu('customize');    // サイト名 → カスタマイズ
        $wp_admin_bar->remove_menu('search');       // 検索 
        $wp_admin_bar->remove_node('edit');       //固定ページを編集 
    }
}
add_action('admin_bar_menu', 'add_admin_bar_menu', 999); 

if (!current_user_can(‘administrator’)) { //管理者でない場合 という条件を付与しています。
こちらを購読者にする場合は
if (current_user_can(‘subscriber’)) { にします。

任意の行をコメントアウトするとその項目は現れます。

例 
$wp_admin_bar->remove_menu( 'new-content' );  // 新規
↓
//$wp_admin_bar->remove_menu( 'new-content' );  // 新規は表示

管理画面の左メニューから任意の項目を任意の権限のユーザーから隠す

コードは下記のようになります。先ほどのコードと同様隠したくないメニュー項目は行頭に//を入れるとコメントアウトされて無効化され表示されるようになります。

//ワードプレスの管理画面の左メニューを非表示
function set_remove_left_menus()
{
    if (!current_user_can('administrator')) {//管理者でない場合
        remove_menu_page( 'index.php' );//ダッシュボードを隠す
        remove_menu_page( 'edit.php' );//投稿
        remove_menu_page( 'upload.php' );//メディア
        remove_menu_page( 'edit.php?post_type=page' ); // 固定ページ
        remove_menu_page( 'edit-comments.php' );// コメント
        remove_menu_page( 'themes.php' ); // 外観
        remove_menu_page( 'plugins.php' ); // プラグイン
        remove_menu_page( 'users.php' );// ユーザー
        remove_menu_page( 'tools.php' ); // ツール
        remove_menu_page( 'options-general.php' ); // 設定
    }
}
add_action('admin_menu', 'set_remove_left_menus',999);

任意のプラグインの管理画面左メニューを隠す

上記コードはよく見ていただくと、

remove_menu_page( メニューがリンクしているwp-admin以下のURL ); という構造になっているのが分かるかと存じます。
つまりプラグインが作成する任意のプラグインのメニューも隠すことが可能です。この場合、プラグインのメニューからリンクする管理ページが
admin.php?page=pluginslug
の場合

function set_remove_left_menus()
{
    if (! current_user_can('administrator')) {//管理者でない場合
        remove_menu_page( 'pluginslug' );
    }
}
add_action('admin_menu', 'set_remove_left_menus',999);

とするとプラグインメニューを隠すことができます。(隠せない場合は999の優先順位をより高い数値にします。)

管理画面のツールの中にプラグインが作るメニューを隠したい場合

そのメニュー項目のリンク先が tools.php?page=advanced-cron-manager
の場合
下記のようにします

remove_submenu_page( 'tools.php', 'advanced-cron-manager' );

上記コードはremove_submenu_pageでサブメニューページを隠す処理を使用しています。tools.php のプラグインのスラグadvanced-cron-managerのサブメニューを隠すという意味になります。

WordPress ワードプレスのテーマやプラグイン作成・カスタマイズ・修正のご依頼ご相談はお気軽にWPドクターまでお送りください