WordPress.org

Make WordPress Core

Ticket #8614: exclude_tree_terms_back_compat.diff

File exclude_tree_terms_back_compat.diff, 3.6 KB (added by filosofo, 5 years ago)
  • wp-includes/taxonomy.php

     
    534534 * of term ids to exclude from the return array.  If 'include' is non-empty, 
    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. 
    539543 * 
     
    604608        $in_taxonomies = "'" . implode("', '", $taxonomies) . "'"; 
    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' => '', 
    610614                'pad_counts' => false, 'offset' => '', 'search' => ''); 
     
    668672        $inclusions = ''; 
    669673        if ( !empty($include) ) { 
    670674                $exclude = ''; 
     675                $exclude_tree = ''; 
    671676                $interms = preg_split('/[\s,]+/',$include); 
    672677                if ( count($interms) ) { 
    673678                        foreach ( (array) $interms as $interm ) { 
     
    684689        $where .= $inclusions; 
    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 
    694713                                        $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' '; 
  • wp-includes/category-template.php

     
    443443 *     'feed_image' - See {@link get_categories()}. 
    444444 *     'child_of' (int) default is 0 - See {@link get_categories()}. 
    445445 *     'exclude' (string) - See {@link get_categories()}. 
     446 *     'exclude_tree' (string) - See {@link get_categories()}. 
    446447 *     'echo' (bool|int) default is 1 - Whether to display or retrieve content. 
    447448 *     'current_category' (int) - See {@link get_categories()}. 
    448449 *     'hierarchical' (bool) - See {@link get_categories()}. 
     
    461462                'style' => 'list', 'show_count' => 0, 
    462463                'hide_empty' => 1, 'use_desc_for_title' => 1, 
    463464                'child_of' => 0, 'feed' => '', 'feed_type' => '', 
    464                 'feed_image' => '', 'exclude' => '', 'current_category' => 0, 
     465                'feed_image' => '', 'exclude' => '', 'exclude_tree' => '', 'current_category' => 0, 
    465466                'hierarchical' => true, 'title_li' => __( 'Categories' ), 
    466467                'echo' => 1, 'depth' => 0 
    467468        ); 
     
    476477                $r['include_last_update_time'] = $r['show_date']; 
    477478        } 
    478479 
     480        if ( true == $r['hierarchical'] ) { 
     481                $r['exclude_tree'] = $r['exclude']; 
     482                $r['exclude'] = ''; 
     483        } 
     484 
    479485        extract( $r ); 
    480486 
    481487        $categories = get_categories( $r );