WordPress.org

Make WordPress Core

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

File 21949.wp-class.3.patch, 2.2 KB (added by wpsmith, 6 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']) ) {