WordPress.org

Make WordPress Core

Ticket #11823: taxonomy.php.2.diff

File taxonomy.php.2.diff, 1.9 KB (added by sirzooro, 8 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