ウェベン!

【WP】カスタム投稿を権限ごとにメニューから消す(基本もおさらい)

WordPressの管理画面から不要なメニューを消す方法はいろいろな方が記事にしてくれていますが、
カスタム投稿をメニューから消す方法は探してもほとんど見つかりませんでした。

基本的な応用だからかもしれませんが、
今回権限ごとにカスタム投稿を消す案件がありましたのでメモ。

カスタム投稿を管理者権限以外でメニューから非表示にする

▼ functions.php

function remove_menus () {
    if (!current_user_can('administrator')) { //管理者ではない場合
	remove_menu_page( 'edit.php?post_type=work' );  //「work」というカスタム投稿タイプを非表示
    }
}
add_action('admin_menu', 'remove_menus');

2行目で管理者権限ではない場合に絞り込んでいます。
3行目で対象のカスタム投稿(ここではwork)をメニューから削除しています。

念のため、ざっくり全部説明すると
1行目でこの設定にremove_menusと名前を付けて、中にさっきの詳細を書いてあげて、
6行目でadmin_menu(管理画面のメニュー)にremove_menusの設定を追加してあげる、という感じです。

関数リファレンス/current user can – WordPress Codex 日本語版

関数リファレンス/remove menu page – WordPress Codex 日本語版

MW WP FORMも同じ方法でメニューから非表示にできる

▼ functions.php

function remove_menus () {
    if (!current_user_can('administrator')) { //管理者ではない場合
	remove_menu_page( 'edit.php?post_type=mw-wp-form' );  //MW WP FORMを非表示
    }
}
add_action('admin_menu', 'remove_menus');

私はフォームを実装するなら絶対MW WP FORM派なのですが、
カスタム投稿をベースに作られているみたいで、同じ方法で非表示にできます。

権限リスト

権限の一覧です。

  • 「管理者」administrator
  • 「編集者」editor
  • 「投稿者」author
  • 「寄稿者」contributor
  • 「購読者」subscriber

基本のメニュー非表示

私自身がこういうの調べるときに
まとめて置いといてくれたらなーと思っていたので(ワガママ)、
最後にまとめておきます。

管理画面の非表示にしたいメニューを消す

▼ functions.php

function remove_menus(){ 
  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', 'remove_menus' );

これはカスタム投稿のときと同じで、
remove_menu_pageの消す対象を変えるだけです。

今度はサブメニューを消す

▼ functions.php

function remove_menus(){
  remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );  // 投稿 > タグ
  remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );  // 投稿 > カテゴリー

  remove_submenu_page( 'index.php', 'index.php' );                       // ダッシュボード > ホーム
  remove_submenu_page( 'index.php', 'update-core.php' );                 // ダッシュボード > 更新

  remove_submenu_page( 'edit.php?post_type=page', 'post-new.php?post_type=page' );  // 固定ページ > 新規追加

  remove_submenu_page( 'themes.php', 'themes.php' );  // 外観 > テーマ
  remove_submenu_page( 'themes.php', 'customize.php?return=' . rawurlencode( $_SERVER['REQUEST_URI'] ) );  // 外観 > カスタマイズ
  remove_submenu_page( 'themes.php', 'nav-menus.php' );     // 外観 > メニュー
  remove_submenu_page( 'themes.php', 'widgets.php' );       // 外観 > ウィジェット
  remove_submenu_page( 'themes.php', 'theme-editor.php' );  // 外観 > テーマエディター

  remove_submenu_page( 'plugins.php', 'plugin-install.php' );  // プラグイン > 新規追加
  remove_submenu_page( 'plugins.php', 'plugin-editor.php' );   // プラグイン > プラグインエディター

  remove_submenu_page( 'tools.php', 'tools.php' );             // ツール > 利用可能なツール
  remove_submenu_page( 'tools.php', 'import.php' );            // ツール > インポート
  remove_submenu_page( 'tools.php', 'export.php' );            // ツール > エクスポート
  remove_submenu_page( 'tools.php', 'site-health.php' );       // ツール > サイトヘルス
  remove_submenu_page( 'tools.php', 'export_personal_data' );  // ツール > 個人データのエクスポート
  remove_submenu_page( 'tools.php', 'remove_personal_data' );  // ツール > 個人データの消去

  remove_submenu_page( 'options-general.php', 'options-general.php' );     // 設定 > 一般
  remove_submenu_page( 'options-general.php', 'options-writing.php' );     // 設定 > 投稿設定
  remove_submenu_page( 'options-general.php', 'options-reading.php' );     // 設定 > 表示設定
  remove_submenu_page( 'options-general.php', 'options-discussion.php' );  // 設定 > ディスカッション
  remove_submenu_page( 'options-general.php', 'options-media.php' );       // 設定 > メディア
  remove_submenu_page( 'options-general.php', 'options-permalink.php' );   // 設定 > パーマリンク
  remove_submenu_page( 'options-general.php', 'privacy.php' );             // 設定 > プライバシー
}
add_action( 'admin_menu', 'remove_menus' );

サブメニューを消すときはremove_submenu_pageを使います。
たくさんあるので実際に使いそうなものだけに絞ったのですが、それでも多いです。

関数リファレンス/remove submenu page – WordPress Codex 日本語版

キーワード: