子菜单
添加子菜单
要向 WordPress 管理添加新的子菜单,请使用该add_submenu_page()
功能。
add_submenu_page(
string $parent_slug,
string $page_title,
string $menu_title,
string $capability,
string $menu_slug,
callable $function = ''
);
例子
假设我们想在“工具”顶级菜单中添加一个子菜单“WPOrg 选项”。
第一步是创建一个输出 HTML 的函数。在此函数中,我们将执行必要的安全检查并呈现我们使用Settings API注册的选项。
笔记:我们建议使用<div>
类包装您的 HTML wrap
。
function wporg_options_page_html() {
// check user capabilities
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1><?php echo 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', 'textdomain' ) );
?>
</form>
</div>
<?php
}
第二步是注册我们的 WPOrg 选项子菜单。注册需要在admin_menu
操作挂钩期间进行。
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() 。
预定义的子菜单
$parent_slug
如果我们有辅助函数来定义WordPress 内置的顶级菜单并避免我们通过源代码手动搜索它,那不是很好吗?
下面是父 slug 及其辅助函数的列表:
- add_dashboard_page() –
index.php
- add_posts_page() –
edit.php
- add_media_page() –
upload.php
- add_pages_page() –
edit.php?post_type=page
- add_comments_page() –
edit-comments.php
- add_theme_page() –
themes.php
- add_plugins_page() –
plugins.php
- add_users_page() –
users.php
- add_management_page() –
tools.php
- add_options_page() –
options-general.php
- add_options_page() –
settings.php
- add_links_page() –
link-manager.php
– 自 WP 3.5+ 起需要插件 - 自定义帖子类型 –
edit.php?post_type=wporg_post_type
- 网络管理员 –
settings.php
删除子菜单
移除子菜单的过程与移除顶级菜单完全相同。
提交表格
在子菜单中处理表单提交的过程与在顶级菜单中提交表单完全相同。
add_submenu_page()
与预定义子菜单(add_dashboard_page
、add_posts_page
等)的所有函数一起将返回 a $hookname
,您可以将其用作的第一个参数,add_action
以便处理自定义页面中的表单提交:
function wporg_options_page() {
$hookname = add_submenu_page(
'tools.php',
'WPOrg Options',
'WPOrg Options',
'manage_options',
'wporg',
'wporg_options_page_html'
);
add_action( 'load-' . $hookname, 'wporg_options_page_html_submit' );
}
add_action('admin_menu', 'wporg_options_page');
与往常一样,不要忘记检查表单是否正在提交,进行 CSRF 验证、验证和清理。