## 添加顶级菜单 要向WordPress管理添加新的顶级菜单,请使用add_menu_page()函数。 ``` <?php add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', string $icon_url = '', int $position = null ); ``` ## 示例 假设我们要添加一个名为“WPOrg”的顶级菜单。 第一步将创建一个将输出HTML的函数。 在此功能中,我们将执行必要的安全检查,并使用Settings API呈现我们注册的选项。 >[info] 注意:我们建议使用一个包裹类型的“<div>”包装你的HTML。 ``` <?php function wporg_options_page_html() { // check user capabilities if (!current_user_can('manage_options')) { return; } ?> <div class="wrap"> <h1><?= esc_html(get_admin_page_title()); ?></h1> <form action="options.php" method="post"> <?php // output security fields for the registered setting "wporg_options" settings_fields('wporg_options'); // output setting sections and their fields // (sections are registered for "wporg", each field is registered to a specific section) do_settings_sections('wporg'); // output save settings button submit_button('Save Settings'); ?> </form> </div> <?php } ``` 第二步将注册我们的WPOrg菜单。 注册需要在admin_menu操作钩子中进行。 ``` <?php function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', 'wporg', 'wporg_options_page_html', plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action('admin_menu', 'wporg_options_page'); ``` 有关参数列表,请参阅引用中的add_menu_page()。 ## 使用PHP文件进行HTML 便携式代码的最佳做法是创建一个需要/包含您的PHP文件的回调。 为了完整性和帮助您了解遗留代码,我们将展示另一种方法:将PHP文件路径作为$ menu_slug参数传递一个null $ function参数。 ``` <?php function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', plugin_dir_path(__FILE__) . 'admin/view.php', null, plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action('admin_menu', 'wporg_options_page'); ``` ## 删除顶级菜单 要从WordPress管理中删除注册的菜单,请使用remove_menu_page()函数。 ``` <?php remove_menu_page( string $menu_slug ); ``` >[warning] 警告:删除菜单不会阻止用户直接访问它们。这绝对不能用来限制用户的功能。 ## 示例 让我们说要从中删除“工具”菜单。 ``` <?php function wporg_remove_options_page() { remove_menu_page('tools.php'); } add_action('admin_menu', 'wporg_remove_options_page', 99); ``` 在尝试删除之前,请确保已将菜单注册到admin_menu钩子,为add_action()指定较高优先级号。