WordPress.org

Make WordPress Core

Ticket #44524: 44524.diff

File 44524.diff, 2.4 KB (added by wpsmith, 2 years ago)
  • src/wp-admin/includes/plugin.php

    diff --git a/src/wp-admin/includes/plugin.php b/src/wp-admin/includes/plugin.php
    index c898fc5..9d2718f 100644
    a b function get_plugin_page_hookname( $plugin_page, $parent_page ) { 
    17961796
    17971797/**
    17981798 * @global string $pagenow
     1799 * @global string $typenow
    17991800 * @global array $menu
    18001801 * @global array $submenu
    18011802 * @global array $_wp_menu_nopriv
    function get_plugin_page_hookname( $plugin_page, $parent_page ) { 
    18041805 * @global array $_registered_pages
    18051806 */
    18061807function user_can_access_admin_page() {
    1807         global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv,
     1808        global $pagenow, $typenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv,
    18081809                $plugin_page, $_registered_pages;
    18091810
    18101811        $parent = get_admin_page_parent();
    18111812
    1812         if ( ! isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $parent ][ $pagenow ] ) ) {
     1813        $real_pagenow = $pagenow;
     1814        if ( 'edit.php' === $pagenow && 'post' !== $typenow ) {
     1815                $real_pagenow = $pagenow . '?post_type=' . $typenow;
     1816        }
     1817
     1818        if ( ! isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $parent ][ $real_pagenow ] ) ) {
    18131819                return false;
    18141820        }
    18151821
    function user_can_access_admin_page() { 
    18261832        }
    18271833
    18281834        if ( empty( $parent ) ) {
    1829                 if ( isset( $_wp_menu_nopriv[ $pagenow ] ) ) {
     1835                if ( isset( $_wp_menu_nopriv[ $real_pagenow ] ) ) {
    18301836                        return false;
    18311837                }
    1832                 if ( isset( $_wp_submenu_nopriv[ $pagenow ][ $pagenow ] ) ) {
     1838                if ( isset( $_wp_submenu_nopriv[ $real_pagenow ][ $real_pagenow ] ) ) {
    18331839                        return false;
    18341840                }
    1835                 if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $pagenow ][ $plugin_page ] ) ) {
     1841                if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $real_pagenow ][ $plugin_page ] ) ) {
    18361842                        return false;
    18371843                }
    18381844                if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
    18391845                        return false;
    18401846                }
    18411847                foreach ( array_keys( $_wp_submenu_nopriv ) as $key ) {
    1842                         if ( isset( $_wp_submenu_nopriv[ $key ][ $pagenow ] ) ) {
     1848                        if ( isset( $_wp_submenu_nopriv[ $key ][ $real_pagenow ] ) ) {
    18431849                                return false;
    18441850                        }
    18451851                        if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $key ][ $plugin_page ] ) ) {
    function user_can_access_admin_page() { 
    18611867                                } else {
    18621868                                        return false;
    18631869                                }
    1864                         } elseif ( $submenu_array[2] == $pagenow ) {
     1870                        } elseif ( $submenu_array[2] == $real_pagenow ) {
    18651871                                if ( current_user_can( $submenu_array[1] ) ) {
    18661872                                        return true;
    18671873                                } else {