概要
remove_submenu_page
アクションは、WordPressの管理画面のメニューから特定のサブメニューを削除するために使用されます。主にカスタム管理メニューを作成する際や、不要なサブメニューを隠す機能を実装する際によく使われます。このアクションを利用することで、管理者やユーザーが必要のないメニュー項目を表示しないようにすることができます。以下は、具体的な機能の利用例です。
- 特定のユーザー権限を持つユーザーのためにサブメニューを削除する。
- プラグインの管理画面から特定の設定サブメニューを削除する。
- カスタム投稿タイプのメニューから一部のオプションを隠す。
- プラグインの更新や設定に関連するサブメニューを無効化する。
- テーマに関連するサブメニューを隠し、ユーザーインターフェースを整理する。
- マルチサイト環境で特定のサイトに対してサブメニューを隠す。
- ユーザーエクスペリエンスを向上させるために、誤操作を防ぐ目的でメニューをカスタマイズする。
- 特定の条件下でサブメニューを動的に管理する機能を追加する。
構文
remove_submenu_page( $parent_slug, $submenu_slug );
パラメータ
$parent_slug
(string): 削除するサブメニューが属する親メニューのスラッグ。$submenu_slug
(string): 削除するサブメニューのスラッグ。
戻り値
この関数は特に値を返しませんが、指定されたサブメニューが管理メニューから削除されたかどうかが反映されます。
関連する関数
使用可能なWordPressバージョン
remove_submenu_page
アクションは、WordPress 2.7以降のバージョンで使用可能です。特に非推奨または削除されたバージョンはありません。
ワードプレスのコアファイルのパス
wp-admin/includes/menu.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | 〇 |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | 〇 |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 特定のサブメニューを削除
add_action('admin_menu', 'remove_my_submenu');
function remove_my_submenu() {
remove_submenu_page('options-general.php', 'options-writing.php');
}
このコードは、WordPressの設定メニューから「投稿設定」サブメニューを削除します。
サンプルコード2: プラグインメニューのサブメニューを削除
add_action('admin_menu', 'remove_plugin_submenu');
function remove_plugin_submenu() {
remove_submenu_page('plugins.php', 'plugin-settings');
}
このコードは、プラグインメニューから特定のプラグイン設定ページ(plugin-settings
)を削除します。
サンプルコード3: カスタム投稿タイプのサブメニューを削除
add_action('admin_menu', 'remove_custom_post_type_submenu');
function remove_custom_post_type_submenu() {
remove_submenu_page('edit.php?post_type=custom_post', 'edit.php?post_type=custom_post&page=custom-post-settings');
}
このコードは、カスタム投稿タイプの設定サブメニューを削除します。
サンプルコード4: ユーザー権限に基づいてサブメニューを削除
add_action('admin_menu', 'remove_submenu_based_on_role');
function remove_submenu_based_on_role() {
if (!current_user_can('administrator')) {
remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=category');
}
}
このコードは、管理者以外のユーザーがカテゴリーのサブメニューを削除します。
サンプルコード5: マルチサイト環境でのサブメニューを削除
add_action('network_admin_menu', 'remove_network_submenu');
function remove_network_submenu() {
remove_submenu_page('settings.php', 'network-settings');
}
このコードは、WordPressのマルチサイト環境において、ネットワーク設定メニューから特定のサブメニューを削除します。