From 9c2707c3e74b97ecddca66c4576f7620a14449d4 Mon Sep 17 00:00:00 2001 From: Mark Jaquith Date: Wed, 2 Mar 2011 04:10:21 +0000 Subject: [PATCH] Reparse the taxonomy query if query vars change. fixes #16622 for trunk git-svn-id: https://develop.svn.wordpress.org/trunk@17489 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/query.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wp-includes/query.php b/wp-includes/query.php index 0f394f0fa1..663b1c9135 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -1231,13 +1231,13 @@ class WP_Query { var $is_post_type_archive = false; /** - * Whether the tax query has been parsed once. + * Stores the ->query_vars state like md5(serialize( $this->query_vars ) ) so we know + * whether we have to re-parse because something has changed * * @since 3.1.0 * @access private - * @var bool */ - var $parsed_tax_query = false; + var $query_vars_hash = false; /** * Resets query flags to false. @@ -1496,7 +1496,7 @@ class WP_Query { $this->is_date = true; } - $this->parsed_tax_query = false; + $this->query_vars_hash = false; $this->parse_tax_query( $qv ); foreach ( $this->tax_query->queries as $tax_query ) { @@ -1682,7 +1682,7 @@ class WP_Query { } // Category stuff - if ( !empty($q['cat']) && '0' != $q['cat'] && !$this->is_singular && !$this->parsed_tax_query ) { + if ( !empty($q['cat']) && '0' != $q['cat'] && !$this->is_singular && md5(serialize( $this->query_vars ) ) != $this->query_vars_hash ) { $q['cat'] = ''.urldecode($q['cat']).''; $q['cat'] = addslashes_gpc($q['cat']); $cat_array = preg_split('/[,\s]+/', $q['cat']); @@ -1736,7 +1736,7 @@ class WP_Query { } // Tag stuff - if ( '' != $q['tag'] && !$this->is_singular && !$this->parsed_tax_query ) { + if ( '' != $q['tag'] && !$this->is_singular && md5(serialize( $this->query_vars ) ) != $this->query_vars_hash ) { if ( strpos($q['tag'], ',') !== false ) { $tags = preg_split('/[,\s]+/', $q['tag']); foreach ( (array) $tags as $tag ) { @@ -1808,7 +1808,7 @@ class WP_Query { ); } - $this->parsed_tax_query = true; + $this->query_vars_hash = md5(serialize( $this->query_vars ) ); $this->tax_query = new WP_Tax_Query( $tax_query ); }