get_admin_page_title()WP 1.5.0

Gets the title of the admin page.

The title of the page will be as specified when registering the page/subpage in the functions add_menu_page() and add_submenu_page().

It works based on the data of the global variables $menu and $submenu. These variables collect the data of the admin pages when they are registered through the functions add_menu_page() and add_submenu_page() respectively.

The result of this function (the title) is stored in the global variable $title, which is available in the admin panel. However, using it directly may not be the best idea.

No Hooks.

Returns

String. The title of the current WordPress admin panel page.

Usage

get_admin_page_title();

Examples

0

#1 Title for the created subpage in the "Tools" menu item

This example shows how to dynamically output the header of the admin page. The header in this case is specified when registering the page with add_submenu_page().

<?php

// Add a submenu page to the "Tools" menu of the admin panel
add_action( 'admin_menu', function(){

	add_submenu_page( 
		'themes.php', 
		'My Tools page', 
		'My Tools', 
		'edit_others_posts', 
		'theme_docs', 
		'my_tools_submenu_page_callback'
	);
} );

function my_tools_submenu_page_callback(){
	?>
	<div class="wrap">
		<h2><?= esc_html( get_admin_page_title() ) ?></h2>

		Page Content here...

	</div>
	<?php
}

Notes

  • Global. String. $title The title of the current screen.
  • Global. Array. $menu
  • Global. Array. $submenu
  • Global. String. $pagenow The filename of the current screen.
  • Global. String. $typenow The post type of the current screen.
  • Global. String. $plugin_page

Changelog

Since 1.5.0 Introduced.

get_admin_page_title() code WP 6.9.1

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;
}