WordPress.org

Make WordPress Core

Changeset 17246


Ignore:
Timestamp:
01/09/2011 08:49:11 PM (9 years ago)
Author:
ryan
Message:

Don't parse cat query var twice. Don't include children for category* queries. Props SergeyBiryukov. see #16152

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/query.php

    r17245 r17246  
    12301230     */
    12311231    var $is_post_type_archive = false;
     1232
     1233    /**
     1234     * Whether the tax query has been parsed once.
     1235     *
     1236     * @since 3.1.0
     1237     * @access private
     1238     * @var bool
     1239     */
     1240    var $parsed_tax_query = false;
    12321241
    12331242    /**
     
    14861495            }
    14871496
     1497            $this->parsed_tax_query = false;
    14881498            $this->parse_tax_query( $qv );
    14891499
     
    16721682
    16731683        // Category stuff
    1674         if ( !empty($q['cat']) && '0' != $q['cat'] && !$this->is_singular ) {
     1684        if ( !empty($q['cat']) && '0' != $q['cat'] && !$this->is_singular && !$this->parsed_tax_query ) {
    16751685            $q['cat'] = ''.urldecode($q['cat']).'';
    16761686            $q['cat'] = addslashes_gpc($q['cat']);
     
    16851695                if ( $in ) {
    16861696                    $q['category__in'][] = $cat;
     1697                    $q['category__in'] = array_merge( $q['category__in'], get_term_children($cat, 'category') );
    16871698                } else {
    16881699                    $q['category__not_in'][] = $cat;
     1700                    $q['category__not_in'] = array_merge( $q['category__not_in'], get_term_children($cat, 'category') );
    16891701                }
    16901702            }
     
    16971709                'taxonomy' => 'category',
    16981710                'terms' => $q['category__in'],
    1699                 'field' => 'term_id'
     1711                'field' => 'term_id',
     1712                'include_children' => false
    17001713            );
    17011714        }
     
    17061719                'taxonomy' => 'category',
    17071720                'terms' => $q['category__not_in'],
    1708                 'operator' => 'NOT IN'
     1721                'operator' => 'NOT IN',
     1722                'include_children' => false
    17091723            );
    17101724        }
     
    17161730                'terms' => $q['category__and'],
    17171731                'field' => 'term_id',
    1718                 'operator' => 'AND'
     1732                'operator' => 'AND',
     1733                'include_children' => false
    17191734            );
    17201735        }
     
    17731788            );
    17741789        }
     1790
     1791        $this->parsed_tax_query = true;
    17751792
    17761793        $this->tax_query = new WP_Tax_Query( $tax_query );
Note: See TracChangeset for help on using the changeset viewer.