WordPress.org

Make WordPress Core

Ticket #21949: 21949.patch

File 21949.patch, 1.7 KB (added by ocean90, 6 years ago)
  • wp-includes/class-wp.php

     
    286286                        if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) )
    287287                                $this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] );
    288288
    289                 // Limit publicly queried post_types to those that are publicly_queryable
    290                 if ( isset( $this->query_vars['post_type']) ) {
    291                         $queryable_post_types = get_post_types( array('publicly_queryable' => true) );
    292                         if ( ! is_array( $this->query_vars['post_type'] ) ) {
    293                                 if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types ) )
    294                                         unset( $this->query_vars['post_type'] );
    295                         } else {
    296                                 $this->query_vars['post_type'] = array_intersect( $this->query_vars['post_type'], $queryable_post_types );
     289                // Limit publicly queried post_types & taxonomies to those that are publicly_queryable & public respectively
     290                foreach ( array( 'post_type', 'taxonomy', ) as $qv ) {
     291                        if ( isset( $this->query_vars[$qv]) ) {
     292                                if ( 'post_type' == $qv )
     293                                        $queryable = get_post_types( array('publicly_queryable' => true) );
     294                                else
     295                                        $queryable = get_taxonomies( array( 'public' => true ) );
     296                                if ( ! is_array( $this->query_vars[$qv] ) ) {
     297                                        if ( ! in_array( $this->query_vars[$qv], $queryable ) )
     298                                                unset( $this->query_vars[$qv] );
     299                                } else {
     300                                        $this->query_vars[$qv] = array_intersect( $this->query_vars[$qv], $queryable );
     301                                }
    297302                        }
    298303                }
    299 
     304               
    300305                foreach ( (array) $this->private_query_vars as $var) {
    301306                        if ( isset($this->extra_query_vars[$var]) )
    302307                                $this->query_vars[$var] = $this->extra_query_vars[$var];