WordPress.org

Make WordPress Core

Ticket #21949: 21949.wp-class.3.patch

File 21949.wp-class.3.patch, 2.2 KB (added by wpsmith, 3 years ago)

3rd pass. Breaks out everything to own section. Removed helper method.

  • wp-includes/class-wp.php

     
    278278                                } 
    279279                        } 
    280280                } 
     281                 
     282                // Only get $queryable_taxonomies if needed 
     283                $queryable_taxonomies = null; 
    281284 
    282285                // Convert urldecoded spaces back into + 
    283                 foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) 
    284                         if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) ) 
     286                foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) { 
     287                        if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) ) { 
    285288                                $this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] ); 
     289                        } 
     290                         
     291                        // Limit publicly queried taxonomy to those that are public 
     292                        // for taxonomy query_vars 
     293                        if ( isset( $this->query_vars[$t->query_var] ) ) { 
     294                                // Only get $queryable_taxonomies if needed 
     295                                if ( null === $queryable_taxonomies ) 
     296                                        $queryable_taxonomies = get_taxonomies( array( 'public' => true ) ); 
     297                                 
     298                                if ( ! is_array( $this->query_vars[$t->query_var] ) ) { 
     299                                        if ( ! in_array( $this->query_vars[$t->query_var], $queryable_taxonomies ) ) { 
     300                                                unset( $this->query_vars[$t->query_var] ); 
     301                                        } 
     302                                } else { 
     303                                        $this->query_vars[$t->query_var] = array_intersect( $this->query_vars[$t->query_var], $queryable_taxonomies ); 
     304                                } 
     305                        } 
     306                } 
     307                 
     308                // Limit publicly queried taxonomy to those that are public 
     309                // for query_var taxonomy 
     310                if ( isset( $this->query_vars['taxonomy'] ) ) { 
     311                        // Only get $queryable_taxonomies if needed 
     312                        if ( null === $queryable_taxonomies ) 
     313                                $queryable_taxonomies = get_taxonomies( array( 'public' => true ) ); 
     314                         
     315                        if ( ! is_array( $this->query_vars['taxonomy'] ) ) { 
     316                                if ( ! in_array( $this->query_vars['taxonomy'], $queryable_taxonomies ) ) { 
     317                                        unset( $this->query_vars['taxonomy'] ); 
     318                                        unset( $this->query_vars['term'] ); 
     319                                } 
     320                        } else { 
     321                                $this->query_vars['taxonomy'] = array_intersect( $this->query_vars['taxonomy'], $queryable_taxonomies ); 
     322                        } 
     323                } 
    286324 
    287325                // Limit publicly queried post_types to those that are publicly_queryable 
    288326                if ( isset( $this->query_vars['post_type']) ) {