Make WordPress Core


Ignore:
Timestamp:
09/29/2015 07:11:12 PM (10 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/tests/phpunit/tests/category/wpListCategories.php

    r33804 r34696  
    265265        $this->assertContains( '<li class="categories">Categories', $found );
    266266    }
     267
     268    /**
     269     * @ticket 12981
     270     */
     271    public function test_exclude_tree_should_be_respected() {
     272        $c = $this->factory->category->create();
     273        $parent = $this->factory->category->create( array( 'name' => 'Parent', 'slug' => 'parent' ) );
     274        $child = $this->factory->category->create( array( 'name' => 'Child', 'slug' => 'child', 'parent' => $parent ) );
     275
     276        $args = array( 'echo' => 0, 'hide_empty' => 0, 'exclude_tree' => $parent );
     277
     278        $actual = wp_list_categories( $args );
     279
     280        $this->assertNotContains( '<li class="cat-item cat-item-' . $parent . '">', $actual );
     281
     282        $this->assertNotContains( '<li class="cat-item cat-item-' . $child . '">', $actual );
     283    }
     284
     285    /**
     286     * @ticket 12981
     287     */
     288    public function test_exclude_tree_should_be_merged_with_exclude() {
     289        $c = $this->factory->category->create();
     290        $parent = $this->factory->category->create( array( 'name' => 'Parent', 'slug' => 'parent' ) );
     291        $child = $this->factory->category->create( array( 'name' => 'Child', 'slug' => 'child', 'parent' => $parent ) );
     292        $parent2 = $this->factory->category->create( array( 'name' => 'Parent', 'slug' => 'parent2' ) );
     293        $child2 = $this->factory->category->create( array( 'name' => 'Child', 'slug' => 'child2', 'parent' => $parent2 ) );
     294
     295        $args = array( 'echo' => 0, 'hide_empty' => 0, 'exclude_tree' => $parent );
     296
     297        $actual = wp_list_categories( array(
     298            'echo' => 0,
     299            'hide_empty' => 0,
     300            'exclude' => $parent,
     301            'exclude_tree' => $parent2,
     302        ) );
     303
     304        $this->assertNotContains( '<li class="cat-item cat-item-' . $parent . '">', $actual );
     305        $this->assertNotContains( '<li class="cat-item cat-item-' . $parent2 . '">', $actual );
     306        $this->assertNotContains( '<li class="cat-item cat-item-' . $child . '">', $actual );
     307
     308        $this->assertNotContains( '<li class="cat-item cat-item-' . $child2 . '">', $actual );
     309    }
    267310}
Note: See TracChangeset for help on using the changeset viewer.