WordPress Version: 6.3
//
// Pluggable Menu Support -- Private.
//
/**
* Gets the parent file of the current admin page.
*
* @since 1.5.0
*
* @global string $parent_file
* @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
* @global array $_wp_real_parent_file
* @global array $_wp_menu_nopriv
* @global array $_wp_submenu_nopriv
*
* @param string $parent_page Optional. The slug name for the parent menu (or the file name
* of a standard WordPress admin page). Default empty string.
* @return string The parent file of the current admin page.
*/
function get_admin_page_parent($parent_page = '')
{
global $parent_file, $menu, $submenu, $pagenow, $typenow, $plugin_page, $_wp_real_parent_file, $_wp_menu_nopriv, $_wp_submenu_nopriv;
if (!empty($parent_page) && 'admin.php' !== $parent_page) {
if (isset($_wp_real_parent_file[$parent_page])) {
$parent_page = $_wp_real_parent_file[$parent_page];
}
return $parent_page;
}
if ('admin.php' === $pagenow && isset($plugin_page)) {
foreach ((array) $menu as $parent_menu) {
if ($parent_menu[2] === $plugin_page) {
$parent_file = $plugin_page;
if (isset($_wp_real_parent_file[$parent_file])) {
$parent_file = $_wp_real_parent_file[$parent_file];
}
return $parent_file;
}
}
if (isset($_wp_menu_nopriv[$plugin_page])) {
$parent_file = $plugin_page;
if (isset($_wp_real_parent_file[$parent_file])) {
$parent_file = $_wp_real_parent_file[$parent_file];
}
return $parent_file;
}
}
if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
$parent_file = $pagenow;
if (isset($_wp_real_parent_file[$parent_file])) {
$parent_file = $_wp_real_parent_file[$parent_file];
}
return $parent_file;
}
foreach (array_keys((array) $submenu) as $parent_page) {
foreach ($submenu[$parent_page] as $submenu_array) {
if (isset($_wp_real_parent_file[$parent_page])) {
$parent_page = $_wp_real_parent_file[$parent_page];
}
if (!empty($typenow) && "{$pagenow}?post_type={$typenow}" === $submenu_array[2]) {
$parent_file = $parent_page;
return $parent_page;
} elseif (empty($typenow) && $pagenow === $submenu_array[2] && (empty($parent_file) || !str_contains($parent_file, '?'))) {
$parent_file = $parent_page;
return $parent_page;
} elseif (isset($plugin_page) && $plugin_page === $submenu_array[2]) {
$parent_file = $parent_page;
return $parent_page;
}
}
}
if (empty($parent_file)) {
$parent_file = '';
}
return '';
}