Make WordPress Core


Ignore:
Timestamp:
12/30/2008 10:30:54 PM (18 years ago)
Author:
ryan
Message:

Add exclude_tree for categories. Make exclude behave like exclude_tree when hierarchical to restore < 2.7 behavior. Props filosofo. fixes #8614 for 2.7

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.7/wp-includes/taxonomy.php

    r10159 r10276  
    535535 * 'exclude' is ignored.
    536536 *
     537 * exclude_tree - A comma- or space-delimited string of term ids to exclude
     538 * from the return array, along with all of their descendant terms according to
     539 * the primary taxonomy.  If 'include' is non-empty, 'exclude_tree' is ignored.
     540 *
    537541 * include - Default is an empty string.  A comma- or space-delimited string
    538542 * of term ids to include in the return array.
    … …  
    605609
    606610        $defaults = array('orderby' => 'name', 'order' => 'ASC',
    607                 'hide_empty' => true, 'exclude' => '', 'include' => '',
     611                'hide_empty' => true, 'exclude' => '', 'exclude_tree' => '', 'include' => '',
    608612                'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '',
    609613                'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '',
    … …  
    669673        if ( !empty($include) ) {
    670674                $exclude = '';
     675                $exclude_tree = '';
    671676                $interms = preg_split('/[\s,]+/',$include);
    672677                if ( count($interms) ) {
    … …  
    685690
    686691        $exclusions = '';
     692        if ( ! empty( $exclude_tree ) ) {
     693                $excluded_trunks = preg_split('/[\s,]+/',$exclude_tree);
     694                foreach( (array) $excluded_trunks as $extrunk ) {
     695                        $excluded_children = (array) get_terms($taxonomies[0], array('child_of' => intval($extrunk), 'fields' => 'ids'));       
     696                        $excluded_children[] = $extrunk;
     697                        foreach( (array) $excluded_children as $exterm ) {
     698                                if ( empty($exclusions) )
     699                                        $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
     700                                else
     701                                        $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
     702
     703                        }
     704                }
     705        }
    687706        if ( !empty($exclude) ) {
    688707                $exterms = preg_split('/[\s,]+/',$exclude);
    689708                if ( count($exterms) ) {
    690709                        foreach ( (array) $exterms as $exterm ) {
    691                                 if (empty($exclusions))
     710                                if ( empty($exclusions) )
    692711                                        $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
    693712                                else
Note: See TracChangeset for help on using the changeset viewer.