WordPress.org

Make WordPress Core

Ticket #12533: 12533.2.diff

File 12533.2.diff, 1.7 KB (added by scribu, 8 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?>