こんにちは、ryohei(@ityryohei)です!

本記事では、WordPressで管理画面のサブメニューを非表示にする方法をご紹介しています。

管理画面のサブメニューを非表示にしたいんだけど、良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

サブメニューを非表示にする関数

WordPressには、予めサブメニューを非表示(取り除く)にできる関数が用意されています。remove_submenu_pageという関数になります。

remove_submenu_pageには下記の引数を渡すことができます。

remove_submenu_page( $menu_slug, $submenu_slug );

引数にはそれぞれ下記の値を指定することができます。

引数名タイプ説明
$menu_slug必須:文字列親メニュー(投稿タイプ)のスラッグを指定
$submenu_slug必須:文字列 サブメニュー(タクソノミー)のスラッグを指定

$menu_slugには非表示にしたいサブメニューを持つ投稿タイプを、 $submenu_slugには、非表示にしたいサブメニューのタクソノミーを指定します。これらをadd_actionadmin_menuで実行することで管理画面から特定の投稿タイプのサブメニューを非表示にすることができます。

管理画面からサブメニューを非表示にする

では実際に管理画面からサブメニューを非表示にする例をご紹介します。本記事ではメニュー名のスラッグをnews、タクソノミーのスラッグをnews_categoryを例にしてコードを書いています。メニュー名とタクソノミー名はそれぞれの環境に合わせて調整してくださいね。

// 操作ファイル:/path/to/wp-content/themes/theme-name/functions.php

function remove_submenu() {
    
    //level10以下のユーザーの場合
    if(!current_user_can('level_10')){

        //投稿タイプのスラッグ
        $post_type = "news";
        //投稿タイプのタクソノミーのスラッグ
        $taxonomy = "news_category";
        //サブメニューを非表示する
        remove_submenu_page(
            "edit.php?post_type={$post_type}",
            "edit-tags.php?taxonomy={$taxonomy}&post_type={$post_type}"
        );
    }
}
//管理画面でremove_submenu()を実行
add_action('admin_menu', 'remove_submenu');

これで管理画面から任意のサブメニューを非表示にすることができるようになります。

最後に

WordPressで実装したい内容をググれば色々な情報を簡単に収集することができます。多くのエンジニアの方が情報を公開してくれているので、カスタマイズしやすくて良いですよね。本記事でご紹介した内容がいつか誰かの役に立ってくれれば嬉しい限りです。

以上、WordPress管理画面のサブメニューを非表示にする方法のご紹介でした!