WordPress.org

Make WordPress Core

Ticket #42558: 42558.patch

File 42558.patch, 4.7 KB (added by johnbillion, 3 years ago)
  • src/wp-includes/class-wp-customize-manager.php

     
    236236         */
    237237        private $_changeset_data;
    238238
     239        protected static $can_customize = false;
     240
    239241        /**
    240242         * Constructor.
    241243         *
     
    892894         * @since 3.4.0
    893895         */
    894896        public function wp_loaded() {
     897                self::$can_customize = current_user_can( 'customize' );
    895898
    896899                // Unconditionally register core types for panels, sections, and controls in case plugin unhooks all customize_register actions.
    897900                $this->register_panel_type( 'WP_Customize_Panel' );
     
    16781681                $args = array_merge(
    16791682                        array(
    16801683                                'exclude_changeset' => false,
    1681                                 'exclude_post_data' => ! current_user_can( 'customize' ),
     1684                                'exclude_post_data' => ! self::$can_customize,
    16821685                        ),
    16831686                        $args
    16841687                );
  • src/wp-includes/class-wp-customize-panel.php

     
    132132         */
    133133        public $active_callback = '';
    134134
     135        protected static $caps = array();
     136
    135137        /**
    136138         * Constructor.
    137139         *
     
    226228         * @return bool False if theme doesn't support the panel or the user doesn't have the capability.
    227229         */
    228230        final public function check_capabilities() {
    229                 if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) {
    230                         return false;
     231                if ( $this->capability ) {
     232                        $capability = (array) $this->capability;
     233
     234                        if ( 1 === count( $capability ) ) {
     235                                if ( ! isset( self::$caps[ $capability[0] ] ) ) {
     236                                        self::$caps[ $capability[0] ] = call_user_func_array( 'current_user_can', $capability );
     237                                }
     238                                if ( ! self::$caps[ $capability[0] ] ) {
     239                                        return false;
     240                                }
     241                        } else {
     242                                if ( ! call_user_func_array( 'current_user_can', $capability ) ) {
     243                                        return false;
     244                                }
     245                        }
    231246                }
    232247
    233248                if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) {
  • src/wp-includes/class-wp-customize-section.php

     
    143143         */
    144144        public $description_hidden = false;
    145145
     146        protected static $caps = array();
     147
    146148        /**
    147149         * Constructor.
    148150         *
     
    244246         * @return bool False if theme doesn't support the section or user doesn't have the capability.
    245247         */
    246248        final public function check_capabilities() {
    247                 if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) {
    248                         return false;
     249                if ( $this->capability ) {
     250                        $capability = (array) $this->capability;
     251
     252                        if ( 1 === count( $capability ) ) {
     253                                if ( ! isset( self::$caps[ $capability[0] ] ) ) {
     254                                        self::$caps[ $capability[0] ] = call_user_func_array( 'current_user_can', $capability );
     255                                }
     256                                if ( ! self::$caps[ $capability[0] ] ) {
     257                                        return false;
     258                                }
     259                        } else {
     260                                if ( ! call_user_func_array( 'current_user_can', $capability ) ) {
     261                                        return false;
     262                                }
     263                        }
    249264                }
    250265
    251266                if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) {
  • src/wp-includes/class-wp-customize-setting.php

     
    148148         */
    149149        protected $is_multidimensional_aggregated = false;
    150150
     151        protected static $caps = array();
     152
    151153        /**
    152154         * Constructor.
    153155         *
     
    816818         * @return bool False if theme doesn't support the setting or user can't change setting, otherwise true.
    817819         */
    818820        final public function check_capabilities() {
    819                 if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) )
    820                         return false;
     821                if ( $this->capability ) {
     822                        $capability = (array) $this->capability;
    821823
     824                        if ( 1 === count( $capability ) ) {
     825                                if ( ! isset( self::$caps[ $capability[0] ] ) ) {
     826                                        self::$caps[ $capability[0] ] = call_user_func_array( 'current_user_can', $capability );
     827                                }
     828                                if ( ! self::$caps[ $capability[0] ] ) {
     829                                        return false;
     830                                }
     831                        } else {
     832                                if ( ! call_user_func_array( 'current_user_can', $capability ) ) {
     833                                        return false;
     834                                }
     835                        }
     836                }
     837
    822838                if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) )
    823839                        return false;
    824840