get_plugin_page_hookname()
云策文档标注
概述
get_plugin_page_hookname() 函数用于获取插件管理页面的 Hook 名称,基于插件页面和父菜单的 slug 参数生成唯一的 Hook 标识符。
关键要点
- 参数:$plugin_page(必需,插件页面的 slug 名称)和 $parent_page(必需,父菜单的 slug 名称或标准 WordPress 管理页面文件名)。
- 返回值:字符串,表示插件页面的 Hook 名称,格式为 page_type_page_plugin_name。
- 内部逻辑:根据 $admin_page_hooks 全局变量和父页面判断页面类型(如 'admin' 或 'toplevel'),并处理插件页面名称以生成 Hook。
- 相关函数:与 get_admin_page_parent()、get_plugin_page_hook()、user_can_access_admin_page()、add_menu_page() 和 add_submenu_page() 等函数关联。
- 版本历史:自 WordPress 1.5.0 版本引入。
代码示例
function get_plugin_page_hookname( $plugin_page, $parent_page ) {
global $admin_page_hooks;
$parent = get_admin_page_parent( $parent_page );
$page_type = 'admin';
if ( empty( $parent_page ) || 'admin.php' === $parent_page || isset( $admin_page_hooks[ $plugin_page ] ) ) {
if ( isset( $admin_page_hooks[ $plugin_page ] ) ) {
$page_type = 'toplevel';
} elseif ( isset( $admin_page_hooks[ $parent ] ) ) {
$page_type = $admin_page_hooks[ $parent ];
}
} elseif ( isset( $admin_page_hooks[ $parent ] ) ) {
$page_type = $admin_page_hooks[ $parent ];
}
$plugin_name = preg_replace( '!.php!', '', $plugin_page );
return $page_type . '_page_' . $plugin_name;
}
原文内容
Gets the hook name for the administrative page of a plugin.
Parameters
$plugin_pagestringrequired-
The slug name of the plugin page.
$parent_pagestringrequired-
The slug name for the parent menu (or the file name of a standard WordPress admin page).
Source
function get_plugin_page_hookname( $plugin_page, $parent_page ) {
global $admin_page_hooks;
$parent = get_admin_page_parent( $parent_page );
$page_type = 'admin';
if ( empty( $parent_page ) || 'admin.php' === $parent_page || isset( $admin_page_hooks[ $plugin_page ] ) ) {
if ( isset( $admin_page_hooks[ $plugin_page ] ) ) {
$page_type = 'toplevel';
} elseif ( isset( $admin_page_hooks[ $parent ] ) ) {
$page_type = $admin_page_hooks[ $parent ];
}
} elseif ( isset( $admin_page_hooks[ $parent ] ) ) {
$page_type = $admin_page_hooks[ $parent ];
}
$plugin_name = preg_replace( '!.php!', '', $plugin_page );
return $page_type . '_page_' . $plugin_name;
}
Changelog
| Version | Description |
|---|---|
| 1.5.0 | Introduced. |