函数文档

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).

Return

string Hook name for the plugin 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.