Make WordPress Core

Changeset 17246


Ignore:
Timestamp:
01/09/2011 08:49:11 PM (16 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.