Ticket #16157: 16157.diff

File 16157.diff, 1.8 KB (added by ryan, 2 years ago)

tag_slugin and some sanitization

  • wp-includes/query.php

     
    16921692                } 
    16931693 
    16941694                if ( !empty($q['category__in']) ) { 
    1695                         $q['category__in'] = array_unique( $q['category__in'] ); 
     1695                        $q['category__in'] = array_map('absint', array_unique( $q['category__in'] ) ); 
    16961696                        $tax_query[] = array( 
    16971697                                'taxonomy' => 'category', 
    16981698                                'terms' => $q['category__in'], 
     
    17011701                } 
    17021702 
    17031703                if ( !empty($q['category__not_in']) ) { 
    1704                         $q['category__not_in'] = array_unique( $q['category__not_in'] ); 
     1704                        $q['category__not_in'] = array_map('absint', array_unique( $q['category__not_in'] ) ); 
    17051705                        $tax_query[] = array( 
    17061706                                'taxonomy' => 'category', 
    17071707                                'terms' => $q['category__not_in'], 
     
    17111711 
    17121712                // Tag stuff 
    17131713                if ( !empty($q['tag_id']) ) { 
     1714                        $q['tag_id'] = absint( $q['tag_id'] ); 
    17141715                        $tax_query[] = array( 
    17151716                                'taxonomy' => 'post_tag', 
    17161717                                'terms' => $q['tag_id'], 
     
    17181719                } 
    17191720 
    17201721                if ( !empty($q['tag__in']) ) { 
     1722                        $q['tag__in'] = array_map('absint', array_unique( $q['tag__in'] ) ); 
    17211723                        $tax_query[] = array( 
    17221724                                'taxonomy' => 'post_tag', 
    17231725                                'terms' => $q['tag__in'], 
     
    17251727                } 
    17261728 
    17271729                if ( !empty($q['tag__not_in']) ) { 
     1730                        $q['tag__not_in'] = array_map('absint', array_unique( $q['tag__not_in'] ) ); 
    17281731                        $tax_query[] = array( 
    17291732                                'taxonomy' => 'post_tag', 
    17301733                                'terms' => $q['tag__not_in'], 
     
    17321735                        ); 
    17331736                } 
    17341737 
     1738                if ( !empty($q['tag_slug__in']) ) { 
     1739                        $q['tag_slug__in'] = array_map('sanitize_title', $q['tag_slug__in']); 
     1740                        $tax_query[] = array( 
     1741                                'taxonomy' => 'post_tag', 
     1742                                'terms' => $q['tag_slug__in'], 
     1743                                'field' => 'slug', 
     1744                        ); 
     1745                } 
     1746 
    17351747                $this->tax_query = new WP_Tax_Query( $tax_query ); 
    17361748        } 
    17371749