函数文档

get_admin_page_title()

💡 云策文档标注

概述

get_admin_page_title() 函数用于获取当前 WordPress 管理页面的标题。它通过全局变量和菜单结构动态确定标题,优先返回已设置的 $title,否则从 $menu 或 $submenu 数组中提取。

关键要点

  • 函数返回当前管理页面的标题字符串,基于全局变量如 $title、$pagenow、$plugin_page 等。
  • 内部逻辑首先检查 $title 是否已定义,若为空则遍历 $menu 和 $submenu 数组匹配页面钩子或路径。
  • 依赖 get_plugin_page_hook() 和 get_admin_page_parent() 辅助函数来确定插件页面和父页面关系。
  • 适用于 WordPress 开发者需要动态获取或显示管理页面标题的场景,例如自定义管理界面。

代码示例

// 示例:获取并输出当前管理页面标题
$page_title = get_admin_page_title();
echo '当前页面标题:' . esc_html( $page_title );

注意事项

  • 函数在 WordPress 1.5.0 版本引入,兼容性良好。
  • 使用时需确保在管理页面上下文中调用,否则可能返回空或不准确结果。
  • 标题提取依赖于 WordPress 核心的菜单结构,自定义菜单需确保正确设置相关数组元素。

📄 原文内容

Gets the title of the current admin page.

Return

string The title of the current admin page.

Source

function get_admin_page_title() {
	global $title, $menu, $submenu, $pagenow, $typenow, $plugin_page;

	if ( ! empty( $title ) ) {
		return $title;
	}

	$hook = get_plugin_page_hook( $plugin_page, $pagenow );

	$parent  = get_admin_page_parent();
	$parent1 = $parent;

	if ( empty( $parent ) ) {
		foreach ( (array) $menu as $menu_array ) {
			if ( isset( $menu_array[3] ) ) {
				if ( $menu_array[2] === $pagenow ) {
					$title = $menu_array[3];
					return $menu_array[3];
				} elseif ( isset( $plugin_page ) && $plugin_page === $menu_array[2] && $hook === $menu_array[5] ) {
					$title = $menu_array[3];
					return $menu_array[3];
				}
			} else {
				$title = $menu_array[0];
				return $title;
			}
		}
	} else {
		foreach ( array_keys( $submenu ) as $parent ) {
			foreach ( $submenu[ $parent ] as $submenu_array ) {
				if ( isset( $plugin_page )
					&& $plugin_page === $submenu_array[2]
					&& ( $pagenow === $parent
						|| $plugin_page === $parent
						|| $plugin_page === $hook
						|| 'admin.php' === $pagenow && $parent1 !== $submenu_array[2]
						|| ! empty( $typenow ) && "$pagenow?post_type=$typenow" === $parent )
					) {
						$title = $submenu_array[3];
						return $submenu_array[3];
				}

				if ( $submenu_array[2] !== $pagenow || isset( $_GET['page'] ) ) { // Not the current page.
					continue;
				}

				if ( isset( $submenu_array[3] ) ) {
					$title = $submenu_array[3];
					return $submenu_array[3];
				} else {
					$title = $submenu_array[0];
					return $title;
				}
			}
		}
		if ( empty( $title ) ) {
			foreach ( $menu as $menu_array ) {
				if ( isset( $plugin_page )
					&& $plugin_page === $menu_array[2]
					&& 'admin.php' === $pagenow
					&& $parent1 === $menu_array[2]
				) {
						$title = $menu_array[3];
						return $menu_array[3];
				}
			}
		}
	}

	return $title;
}

Changelog

Version Description
1.5.0 Introduced.

User Contributed Notes