在开发 WordPress 插件时,管理菜单是一个重要的部分。它位于后台左侧,允许我们为插件或主题添加自定义设置页面。本文将带您逐步了解如何创建和管理这些菜单。
1. 添加顶级菜单
知识点:
如果我们需要在 WordPress 后台添加一个顶级菜单,可以使用 add_menu_page()
函数。这个函数允许开发者在后台左侧的菜单中添加一个新的顶级菜单项。以下是函数的基本结构:
add_menu_page(
string $page_title,
string $menu_title,
string $capability,
string $menu_slug,
callable $function = '',
string $icon_url = '',
int $position = null
);
速记句: 知识点: 速记句: 知识点: 速记句: 知识点: 速记句: 知识点: 速记句: 本文介绍了如何在 WordPress 插件开发中添加和管理后台菜单。我们学习了如何添加顶级菜单和子菜单,如何创建用于页面展示的 HTML 输出函数,以及如何删除菜单。通过这些知识,您可以为插件创建用户友好的后台设置页面。 参考文献:$page_title
是菜单页面的标题,$menu_title
是菜单在后台显示的名称,$capability
决定了哪些用户可以看到这个菜单,$menu_slug
是菜单的唯一标识符,$function
是点击菜单后执行的回调函数,$icon_url
设置菜单的图标,$position
决定菜单的位置。add_menu_page
函数用于在 WordPress 后台添加一个顶级菜单。2. 创建 HTML 输出函数
为了使菜单页面有内容展示,我们需要创建一个输出 HTML 的函数。在这个函数中,可以执行必要的安全检查,并使用 WordPress 的设置 API 来显示注册的选项。function wporg_options_page_html() {
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
settings_fields('wporg_options');
do_settings_sections('wporg');
submit_button('Save Settings');
?>
</form>
</div>
<?php
}
此函数首先检查当前用户是否有足够的权限来访问该页面。接着,它使用 settings_fields()
和 do_settings_sections()
函数输出安全字段和设置字段,然后添加一个提交按钮。
为菜单页面创建输出 HTML 的函数,并进行权限检查和设置显示。3. 注册顶级菜单
将创建好的 HTML 输出函数挂载到 admin_menu
钩子上,实现菜单的注册。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()
添加顶级菜单,其中回调函数 wporg_options_page_html
用于输出页面内容。而 admin_menu
钩子确保菜单在后台管理中被正确注册。
使用 admin_menu
钩子注册顶级菜单。4. 添加子菜单
当我们需要在某个现有的顶级菜单下添加子菜单时,可以使用 add_submenu_page()
函数。add_submenu_page(
string $parent_slug,
string $page_title,
string $menu_title,
string $capability,
string $menu_slug,
callable $function = ''
);
$parent_slug
是父级菜单的标识符,$page_title
和 $menu_title
分别是页面标题和菜单名称,其他参数与 add_menu_page()
类似。这个函数让我们轻松地为已有的顶级菜单添加子菜单。function wporg_options_page() {
add_submenu_page(
'tools.php',
'WPOrg Options',
'WPOrg Options',
'manage_options',
'wporg',
'wporg_options_page_html'
);
}
add_action('admin_menu', 'wporg_options_page');
add_submenu_page
函数用于为顶级菜单添加子菜单。5. 删除菜单
如果需要删除已注册的顶级菜单或子菜单,可以使用 remove_menu_page()
或 remove_submenu_page()
函数。function wporg_remove_options_page(){
remove_menu_page('tools.php');
}
add_action('admin_menu', 'wporg_remove_options_page', 99);
remove_menu_page()
删除顶级菜单,但不会阻止用户直接访问它。删除操作应在菜单注册之后执行,因此 Action 的优先级应设置得较高。remove_menu_page
和 remove_submenu_page
用于删除菜单。总结