WordPress.org

Make WordPress Core

Ticket #14330: better-url-array-fix.patch

File better-url-array-fix.patch, 1.5 KB (added by loushou, 4 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]; 
     277                                if (!is_array($this->query_vars[$wpvar])) { 
     278                                        $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar]; 
     279                                } else { 
     280                                        foreach ($this->query_vars[$wpvar] as &$v) 
     281                                                $v = (string) $v; 
     282                                } 
    278283                                if ( isset( $taxonomy_query_vars[$wpvar] ) ) { 
    279284                                        $this->query_vars['taxonomy'] = $taxonomy_query_vars[$wpvar]; 
    280285                                        $this->query_vars['term'] = $this->query_vars[$wpvar]; 
     
    288293                // Limit publicly queried post_types to those that are publicly_queryable 
    289294                if ( isset( $this->query_vars['post_type']) ) { 
    290295                        $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'] ); 
     296                        if (!is_array($this->query_vars['post_type'])) { 
     297                                if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types ) ) 
     298                                        unset( $this->query_vars['post_type'] ); 
     299                        } else { 
     300                                foreach ($this->query_vars['post_type'] as $key => &$pType) 
     301                                        if ( ! in_array( $pType, $queryable_post_types ) ) 
     302                                                unset( $this->query_vars['post_type'][$key] ); 
     303                        } 
    293304                } 
    294305 
    295306                foreach ( (array) $this->private_query_vars as $var) {