user_can_access_admin_page

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

WordPress Version: 6.1

/**
 * Determines whether the current user can access the current admin page.
 *
 * @since 1.5.0
 *
 * @global string $pagenow            The filename of the current screen.
 * @global array  $menu
 * @global array  $submenu
 * @global array  $_wp_menu_nopriv
 * @global array  $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array  $_registered_pages
 *
 * @return bool True if the current user can access the admin page, false otherwise.
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page === $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] === $plugin_page) {
                return current_user_can($submenu_array[1]);
            } elseif ($submenu_array[2] === $pagenow) {
                return current_user_can($submenu_array[1]);
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] === $parent) {
            return current_user_can($menu_array[1]);
        }
    }
    return true;
}

WordPress Version: 5.6

/**
 * Determines whether the current user can access the current admin page.
 *
 * @since 1.5.0
 *
 * @global string $pagenow
 * @global array  $menu
 * @global array  $submenu
 * @global array  $_wp_menu_nopriv
 * @global array  $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array  $_registered_pages
 *
 * @return bool True if the current user can access the admin page, false otherwise.
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page === $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] === $plugin_page) {
                return current_user_can($submenu_array[1]);
            } elseif ($submenu_array[2] === $pagenow) {
                return current_user_can($submenu_array[1]);
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] === $parent) {
            return current_user_can($menu_array[1]);
        }
    }
    return true;
}

WordPress Version: 5.4

/**
 * Determines whether the current user can access the current admin page.
 *
 * @since 1.5.0
 *
 * @global string $pagenow
 * @global array  $menu
 * @global array  $submenu
 * @global array  $_wp_menu_nopriv
 * @global array  $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array  $_registered_pages
 *
 * @return bool True if the current user can access the admin page, false otherwise.
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } elseif ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}

WordPress Version: 5.2

/**
 * @global string $pagenow
 * @global array $menu
 * @global array $submenu
 * @global array $_wp_menu_nopriv
 * @global array $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array $_registered_pages
 *
 * @return bool Whether the current user can access the current admin page.
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } elseif ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}

WordPress Version: 5.1

/**
 * @global string $pagenow
 * @global array $menu
 * @global array $submenu
 * @global array $_wp_menu_nopriv
 * @global array $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array $_registered_pages
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } elseif ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}

WordPress Version: 4.3

/**
 *
 * @global string $pagenow
 * @global array $menu
 * @global array $submenu
 * @global array $_wp_menu_nopriv
 * @global array $_wp_submenu_nopriv
 * @global string $plugin_page
 * @global array $_registered_pages
 */
function user_can_access_admin_page()
{
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv, $plugin_page, $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } elseif ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}

WordPress Version: 4.2

function user_can_access_admin_page()
{
    global $pagenow;
    global $menu;
    global $submenu;
    global $_wp_menu_nopriv;
    global $_wp_submenu_nopriv;
    global $plugin_page;
    global $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } elseif ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}

WordPress Version: 3.7

function user_can_access_admin_page()
{
    global $pagenow;
    global $menu;
    global $submenu;
    global $_wp_menu_nopriv;
    global $_wp_submenu_nopriv;
    global $plugin_page;
    global $_registered_pages;
    $parent = get_admin_page_parent();
    if (!isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$pagenow])) {
        return false;
    }
    if (isset($plugin_page)) {
        if (isset($_wp_submenu_nopriv[$parent][$plugin_page])) {
            return false;
        }
        $hookname = get_plugin_page_hookname($plugin_page, $parent);
        if (!isset($_registered_pages[$hookname])) {
            return false;
        }
    }
    if (empty($parent)) {
        if (isset($_wp_menu_nopriv[$pagenow])) {
            return false;
        }
        if (isset($_wp_submenu_nopriv[$pagenow][$pagenow])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page])) {
            return false;
        }
        if (isset($plugin_page) && isset($_wp_menu_nopriv[$plugin_page])) {
            return false;
        }
        foreach (array_keys($_wp_submenu_nopriv) as $key) {
            if (isset($_wp_submenu_nopriv[$key][$pagenow])) {
                return false;
            }
            if (isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page])) {
                return false;
            }
        }
        return true;
    }
    if (isset($plugin_page) && $plugin_page == $parent && isset($_wp_menu_nopriv[$plugin_page])) {
        return false;
    }
    if (isset($submenu[$parent])) {
        foreach ($submenu[$parent] as $submenu_array) {
            if (isset($plugin_page) && $submenu_array[2] == $plugin_page) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            } else if ($submenu_array[2] == $pagenow) {
                if (current_user_can($submenu_array[1])) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
    foreach ($menu as $menu_array) {
        if ($menu_array[2] == $parent) {
            if (current_user_can($menu_array[1])) {
                return true;
            } else {
                return false;
            }
        }
    }
    return true;
}