Make WordPress Core


Ignore:
Timestamp:
09/29/2015 07:11:12 PM (9 years ago)
Author:
boonebgorges
Message:

Fix 'exclude_tree' in wp_list_categories().

The 'exclude_tree' parameter must be compatible with 'hierarchical';
previously, 'hierarchical' canceled it out. This changeset also makes it so
that 'exclude_tree' is compatible with 'exclude'. When both are passed, and
'hierarchical' is true, the descendant trees of terms in both parameters will
be excluded from matched terms.

Props tott, webord, MikeHansenMe.
Fixes #12981.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/category-template.php

    r34625 r34696  
    499499 *     @type int          $child_of              Term ID to retrieve child terms of. See {@link get_terms()}. Default 0.
    500500 *     @type array|string $exclude               Array or comma/space-separated string of term IDs to exclude.
    501  *                                               See {@link get_terms()}. Default empty string.
     501 *                                               If `$hierarchical` is true, descendants of `$exclude` terms will also
     502 *                                               be excluded; see `$exclude_tree`. See {@link get_terms()}.
     503 *                                               Default empty string.
    502504 *     @type array|string $exclude_tree          Array or comma/space-separated string of term IDs to exclude, along
    503505 *                                               with their descendants. See {@link get_terms()}. Default empty string.
     
    537539        $r['pad_counts'] = true;
    538540
     541    // Descendants of exclusions should be excluded too.
    539542    if ( true == $r['hierarchical'] ) {
    540         $r['exclude_tree'] = $r['exclude'];
     543        $exclude_tree = array();
     544
     545        if ( $r['exclude_tree'] ) {
     546            $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude_tree'] );
     547        }
     548
     549        if ( $r['exclude'] ) {
     550            $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude'] );
     551        }
     552
     553        $r['exclude_tree'] = $exclude_tree;
    541554        $r['exclude'] = '';
    542555    }
Note: See TracChangeset for help on using the changeset viewer.