1 | Index: wp-includes/class-wp.php |
---|
2 | =================================================================== |
---|
3 | --- wp-includes/class-wp.php (revision 21531) |
---|
4 | +++ wp-includes/class-wp.php (working copy) |
---|
5 | @@ -286,17 +286,22 @@ |
---|
6 | if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) ) |
---|
7 | $this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] ); |
---|
8 | |
---|
9 | - // Limit publicly queried post_types to those that are publicly_queryable |
---|
10 | - if ( isset( $this->query_vars['post_type']) ) { |
---|
11 | - $queryable_post_types = get_post_types( array('publicly_queryable' => true) ); |
---|
12 | - if ( ! is_array( $this->query_vars['post_type'] ) ) { |
---|
13 | - if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types ) ) |
---|
14 | - unset( $this->query_vars['post_type'] ); |
---|
15 | - } else { |
---|
16 | - $this->query_vars['post_type'] = array_intersect( $this->query_vars['post_type'], $queryable_post_types ); |
---|
17 | + // Limit publicly queried post_types & taxonomies to those that are publicly_queryable & public respectively |
---|
18 | + foreach ( array( 'post_type', 'taxonomy', ) as $qv ) { |
---|
19 | + if ( isset( $this->query_vars[$qv]) ) { |
---|
20 | + if ( 'post_type' == $qv ) |
---|
21 | + $queryable = get_post_types( array('publicly_queryable' => true) ); |
---|
22 | + else |
---|
23 | + $queryable = get_taxonomies( array( 'public' => true ) ); |
---|
24 | + if ( ! is_array( $this->query_vars[$qv] ) ) { |
---|
25 | + if ( ! in_array( $this->query_vars[$qv], $queryable ) ) |
---|
26 | + unset( $this->query_vars[$qv] ); |
---|
27 | + } else { |
---|
28 | + $this->query_vars[$qv] = array_intersect( $this->query_vars[$qv], $queryable ); |
---|
29 | + } |
---|
30 | } |
---|
31 | } |
---|
32 | - |
---|
33 | + |
---|
34 | foreach ( (array) $this->private_query_vars as $var) { |
---|
35 | if ( isset($this->extra_query_vars[$var]) ) |
---|
36 | $this->query_vars[$var] = $this->extra_query_vars[$var]; |
---|