WordPress.org

Make WordPress Core

Ticket #14330: url-array-fix.patch

File url-array-fix.patch, 2.5 KB (added by loushou, 5 years ago)

Patch

  • wp-includes/classes.php

     
    274274                                $this->query_vars[$wpvar] = $perma_query_vars[$wpvar]; 
    275275 
    276276                        if ( !empty( $this->query_vars[$wpvar] ) ) { 
    277                                 $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar]; 
    278                                 if ( isset( $taxonomy_query_vars[$wpvar] ) ) { 
    279                                         $this->query_vars['taxonomy'] = $taxonomy_query_vars[$wpvar]; 
    280                                         $this->query_vars['term'] = $this->query_vars[$wpvar]; 
    281                                 } elseif ( isset($post_type_query_vars[$wpvar] ) ) { 
    282                                         $this->query_vars['post_type'] = $post_type_query_vars[$wpvar]; 
    283                                         $this->query_vars['name'] = $this->query_vars[$wpvar]; 
     277                                if (!is_array($this->query_vars[$wpvar])) { 
     278                                        $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar]; 
     279                                        if ( isset( $taxonomy_query_vars[$wpvar] ) ) { 
     280                                                $this->query_vars['taxonomy'] = $taxonomy_query_vars[$wpvar]; 
     281                                                $this->query_vars['term'] = $this->query_vars[$wpvar]; 
     282                                        } elseif ( isset($post_type_query_vars[$wpvar] ) ) { 
     283                                                $this->query_vars['post_type'] = $post_type_query_vars[$wpvar]; 
     284                                                $this->query_vars['name'] = $this->query_vars[$wpvar]; 
     285                                        } 
     286                                } else { 
     287                                        foreach ($this->query_vars[$wpvar] as &$v) 
     288                                                $v = (string) $v; 
     289                                        if ( isset( $taxonomy_query_vars[$wpvar] ) ) { 
     290                                                $this->query_vars['taxonomy'] = $taxonomy_query_vars[$wpvar]; 
     291                                                $this->query_vars['term'] = $this->query_vars[$wpvar]; 
     292                                        } elseif ( isset($post_type_query_vars[$wpvar] ) ) { 
     293                                                $this->query_vars['post_type'] = $post_type_query_vars[$wpvar]; 
     294                                                $this->query_vars['name'] = $this->query_vars[$wpvar]; 
     295                                        } 
    284296                                } 
    285297                        } 
    286298                } 
     
    288300                // Limit publicly queried post_types to those that are publicly_queryable 
    289301                if ( isset( $this->query_vars['post_type']) ) { 
    290302                        $queryable_post_types =  get_post_types( array('publicly_queryable' => true) ); 
    291                         if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types ) ) 
    292                                 unset( $this->query_vars['post_type'] ); 
     303                        if (!is_array($this->query_vars['post_type'])) { 
     304                                if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types ) ) 
     305                                        unset( $this->query_vars['post_type'] ); 
     306                        } else { 
     307                                foreach ($this->query_vars['post_type'] as $key => &$pType) 
     308                                        if ( ! in_array( $pType, $queryable_post_types ) ) 
     309                                                unset( $this->query_vars['post_type'][$key] ); 
     310                        } 
    293311                } 
    294312 
    295313                foreach ( (array) $this->private_query_vars as $var) {