参数
$context
string-
空上下文。
更多信息
- 此操作用于向管理面板的菜单结构添加额外的子菜单和菜单选项。它在基本管理面板菜单结构就绪后运行。
- 这个动作不能放在admin_init动作函数中,因为admin_init动作是在admin_menu之后调用的。
源码
更新日志
版本 | 描述 |
---|---|
1.5.0 | 开始引入 |
使用示例
如果您想更改菜单label,可以使用此钩子并更改
global $menu, $submenu values
,add_action( 'admin_menu', 'change_media_label' ); function change_media_label(){ global $menu, $submenu; debug_msg($menu); $menu[10][0] = 'Photos/Videos'; $submenu['upload.php'][5][0] = 'All Photos/Videos'; $submenu['upload.php'][10][0] = 'Upload new'; }
此代码段添加管理菜单和子菜单HTML内容
//call the 'add_menu_page' function with 'admin_menu' action hook add_action( 'admin_menu', array( $this, 'wpdocs_add_menu_page' ), 99 ); /** * Add page to admin menu */ public function wpdocs_add_menu_page() { add_menu_page( esc_html__( 'WooCommerce B2B Sales Agents', 'woocommerce-b2b-sales-agents' ), esc_html__( 'WooCommerce B2B Sales Agents', 'woocommerce-b2b-sales-agents'), 'manage_woocommerce', 'wcb2bsa-commissions', null, 'dashicons-businessman', 55.5 ); add_submenu_page( 'wcb2bsa-commissions', esc_html__( 'Commissions', 'woocommerce-b2b-sales-agents' ), esc_html__( 'Commissions', 'woocommerce-b2b-sales-agents' ), 'manage_woocommerce', 'wcb2bsa-commissions', array( $this, 'wpdocs_add_menu_page_callback' ) ); } /** * Add page to admin menu callback */ public function wpdocs_add_menu_page_callback() { include WCB2BSA_ABSPATH . 'includes/views/html-admin--page-commissions.php'; }
假设你正在构建一个插件,你需要为插件页面注册一个概览或仪表板菜单选项,你可以这样做:
// Define constants define( 'PLUGIN_SLUG', 'your-plugin' ); define( 'PLUGIN_ROLE', 'manage_options' ); define( 'PLUGIN_DOMAIN', 'your-plugin-text-domain' ); add_action( 'admin_menu', 'register_your_plugin_menu', 9 ); function register_your_plugin_menu() { add_menu_page( __( 'Your Plugin', PLUGIN_DOMAIN ), 'Your Plugin', PLUGIN_ROLE, PLUGIN_SLUG, false, 'dashicons-admin-generic', '' ); add_submenu_page( PLUGIN_SLUG, 'Your Plugin', 'Dashboard', PLUGIN_ROLE, PLUGIN_SLUG, 'your_plugin_dashboard_callback', ); }
你可能会遇到这样的情况:在admin_menu钩子中删除类似admin.php?page=jetpack这样的slug,没有效果。要解决此问题,请使用remove_menu_page()函数定义要删除的正确slug。
尝试以下代码:
function wpdocs_list_menus() { global $menu; var_dump( $menu ); } add_action( 'admin_menu', 'wpdocs_list_menus', 99999 );
从Codex迁移的示例:
示例来自wpautop控件插件,其中的代码用于将选项页添加到“设置”菜单。
add_action('admin_menu', 'wpautop_control_menu'); function wpautop_control_menu() { add_submenu_page('options-general.php', 'wpautop-control', 'wpautop control', 'manage_options', 'wpautop-control-menu', 'wpautop_control_options'); }