menu_page_url

The timeline below displays how wordpress function menu_page_url has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

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

WordPress Version: 5.9

/**
 * 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   $echo      Whether or not to echo the URL. Default true.
 * @return string The menu page URL.
 */
function menu_page_url($menu_slug, $echo = 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 ($echo) {
        echo $url;
    }
    return $url;
}

WordPress Version: 5.4

/**
 * Get 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   $echo      Whether or not to echo the URL. Default true.
 * @return string The menu page URL.
 */
function menu_page_url($menu_slug, $echo = 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 ($echo) {
        echo $url;
    }
    return $url;
}

WordPress Version: 4.3

/**
 * Get 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 $echo Whether or not to echo the url - default is true
 * @return string the url
 */
function menu_page_url($menu_slug, $echo = 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 ($echo) {
        echo $url;
    }
    return $url;
}

WordPress Version: 3.9

/**
 * Get 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
 *
 * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
 * @param bool $echo Whether or not to echo the url - default is true
 * @return string the url
 */
function menu_page_url($menu_slug, $echo = 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 ($echo) {
        echo $url;
    }
    return $url;
}

WordPress Version: 3.7

/**
 * Get 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
 *
 * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
 * @param bool $echo Whether or not to echo the url - default is true
 * @return string the url
 */
function menu_page_url($menu_slug, $echo = 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 ($echo) {
        echo $url;
    }
    return $url;
}