カスタム投稿を権限ごとにメニューから消す(基本もおさらい)|WordPress
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 日本語版
WordPressの勉強するならこの一冊
私自身、この1冊から始めて今でもずっと見返す一冊です。