WordPress.org

Make WordPress Core

Ticket #14060: 14060.2.patch

File 14060.2.patch, 2.0 KB (added by SergeyBiryukov, 7 years ago)
  • wp-admin/includes/menu.php

     
    220220        unset( $menu[ $last_menu_key ] );
    221221unset( $last_menu_key );
    222222
    223 if ( !user_can_access_admin_page() ) {
     223if ( !admin_page_exists() ) {
     224        do_action('admin_page_not_found');
     225        wp_die( __('The requested page does not exist.') );
     226} elseif ( !user_can_access_admin_page() ) {
    224227        do_action('admin_page_access_denied');
    225228        wp_die( __('You do not have sufficient permissions to access this page.') );
    226229}
  • wp-admin/includes/plugin.php

     
    15091509        return $page_type . '_page_' . $plugin_name;
    15101510}
    15111511
     1512function admin_page_exists() {
     1513        global $admin_page_parent;
     1514        global $plugin_page;
     1515        global $_registered_pages;
     1516
     1517        if ( !isset( $admin_page_parent ) )
     1518                $admin_page_parent = get_admin_page_parent();
     1519
     1520        if ( isset( $plugin_page ) ) {
     1521                $hookname = get_plugin_page_hookname($plugin_page, $admin_page_parent);
     1522
     1523                if ( !isset($_registered_pages[$hookname]) )
     1524                        return false;
     1525        }
     1526
     1527        return true;
     1528}
     1529
    15121530function user_can_access_admin_page() {
    15131531        global $pagenow;
    15141532        global $menu;
    15151533        global $submenu;
     1534        global $admin_page_parent;
    15161535        global $_wp_menu_nopriv;
    15171536        global $_wp_submenu_nopriv;
    15181537        global $plugin_page;
    15191538        global $_registered_pages;
    15201539
    1521         $parent = get_admin_page_parent();
     1540        $parent = isset( $admin_page_parent ) ? $admin_page_parent : get_admin_page_parent();
    15221541
    15231542        if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) )
    15241543                return false;
     
    15271546                if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
    15281547                        return false;
    15291548
    1530                 $hookname = get_plugin_page_hookname($plugin_page, $parent);
    1531 
    1532                 if ( !isset($_registered_pages[$hookname]) )
     1549                if ( !admin_page_exists() )
    15331550                        return false;
    15341551        }
    15351552