WordPress.org

Make WordPress Core

Ticket #12533: 12533.2.diff

File 12533.2.diff, 1.7 KB (added by scribu, 5 years ago)

bring in empty terms only for hierarchical taxonomies

  • wp-includes/query.php

     
    19961996                        if ( '' != $q['taxonomy'] ) { 
    19971997                                $taxonomy = $q['taxonomy']; 
    19981998                                $tt[$taxonomy] = $q['term']; 
    1999                                 $terms = get_terms($q['taxonomy'], array('slug'=>$q['term'])); 
     1999                                $terms = get_terms($q['taxonomy'], array('slug' => $q['term'], 'hide_empty' => !is_taxonomy_hierarchical($taxonomy))); 
    20002000                        } else { 
    20012001                                foreach ( $GLOBALS['wp_taxonomies'] as $taxonomy => $t ) { 
    20022002                                        if ( $t->query_var && '' != $q[$t->query_var] ) { 
    2003                                                 $terms = get_terms($taxonomy, array('slug'=>$q[$t->query_var])); 
     2003                                                $terms = get_terms($taxonomy, array('slug' => $q[$t->query_var])); 
    20042004                                                if ( !is_wp_error($terms) ) 
    20052005                                                        break; 
    20062006                                        } 
     
    20092009                        if ( is_wp_error($terms) || empty($terms) ) { 
    20102010                                $whichcat = " AND 0 "; 
    20112011                        } else { 
    2012                                 foreach ( $terms as $term ) 
     2012                                foreach ( $terms as $term ) { 
    20132013                                        $term_ids[] = $term->term_id; 
     2014                                        if ( is_taxonomy_hierarchical($taxonomy) ) { 
     2015                                                $children = get_term_children($term->term_id, $taxonomy); 
     2016                                                if ( is_wp_error($children) ) 
     2017                                                        continue; 
     2018                                                $term_ids = array_merge($term_ids, $children); 
     2019                                        } 
     2020                                } 
    20142021                                $post_ids = get_objects_in_term($term_ids, $taxonomy); 
    2015                                 if ( !is_wp_error($post_ids) && count($post_ids) ) { 
     2022                                if ( !is_wp_error($post_ids) && !empty($post_ids) ) { 
    20162023                                        $whichcat .= " AND $wpdb->posts.ID IN (" . implode(', ', $post_ids) . ") "; 
    20172024                                        $post_type = 'any'; 
    20182025                                        $q['post_status'] = 'publish'; 
     
    28272834        return true; 
    28282835} 
    28292836 
    2830 ?> 
    2831  No newline at end of file 
     2837?>