WordPress.org

Make WordPress Core

Ticket #11823: taxonomy.php.2.diff

File taxonomy.php.2.diff, 1.9 KB (added by sirzooro, 4 years ago)

no loops this time

  • taxonomy.php

    old new  
    906906                $exclude = ''; 
    907907                $exclude_tree = ''; 
    908908                $interms = wp_parse_id_list($include); 
    909                 foreach ( $interms as $interm ) { 
    910                         if ( empty($inclusions) ) 
    911                                 $inclusions = ' AND ( t.term_id = ' . intval($interm) . ' '; 
    912                         else 
    913                                 $inclusions .= ' OR t.term_id = ' . intval($interm) . ' '; 
    914                 } 
     909                $interms = array_map( 'intval', $interms ); 
     910                $inclusions = implode( ',', $interms ); 
    915911        } 
    916912 
    917913        if ( !empty($inclusions) ) 
    918                 $inclusions .= ')'; 
     914                $inclusions = ' AND t.term_id IN ( ' . $inclusions . ' )'; 
    919915        $where .= $inclusions; 
    920916 
    921917        $exclusions = ''; 
     
    924920                foreach ( $excluded_trunks as $extrunk ) { 
    925921                        $excluded_children = (array) get_terms($taxonomies[0], array('child_of' => intval($extrunk), 'fields' => 'ids')); 
    926922                        $excluded_children[] = $extrunk; 
    927                         foreach( $excluded_children as $exterm ) { 
    928                                 if ( empty($exclusions) ) 
    929                                         $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' '; 
    930                                 else 
    931                                         $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' '; 
    932                         } 
     923                        $excluded_children = array_map( 'intval', $excluded_children ); 
     924                        $exclusions = implode( ',', $excluded_children ); 
    933925                } 
    934926        } 
    935927 
    936928        if ( !empty($exclude) ) { 
    937929                $exterms = wp_parse_id_list($exclude); 
    938                 foreach ( $exterms as $exterm ) { 
    939                         if ( empty($exclusions) ) 
    940                                 $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' '; 
    941                         else 
    942                                 $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' '; 
    943                 } 
     930                $exterms = array_map( 'intval', $exterms ); 
     931                if ( empty( $exclusions ) ) 
     932                        $exclusions = implode( ',', $exterms ); 
     933                else 
     934                        $exclusions .= ', ' . implode( ',', $exterms ); 
    944935        } 
    945936 
    946937        if ( !empty($exclusions) ) 
    947                 $exclusions .= ')'; 
     938                $exclusions = ' AND t.term_id NOT IN ( ' . $exclusions . ' )'; 
    948939        $exclusions = apply_filters('list_terms_exclusions', $exclusions, $args ); 
    949940        $where .= $exclusions; 
    950941