WordPress Version: 6.1
/**
* Gets the URL to access a particular menu page based on the slug it was registered with.
*
* If the slug hasn't been registered properly, no URL will be returned.
*
* @since 3.0.0
*
* @global array $_parent_pages
*
* @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
* @param bool $display Optional. Whether or not to display the URL. Default true.
* @return string The menu page URL.
*/
function menu_page_url($menu_slug, $display = true)
{
global $_parent_pages;
if (isset($_parent_pages[$menu_slug])) {
$parent_slug = $_parent_pages[$menu_slug];
if ($parent_slug && !isset($_parent_pages[$parent_slug])) {
$url = admin_url(add_query_arg('page', $menu_slug, $parent_slug));
} else {
$url = admin_url('admin.php?page=' . $menu_slug);
}
} else {
$url = '';
}
$url = esc_url($url);
if ($display) {
echo $url;
}
return $url;
}