WordPress.org

Make WordPress Core

Ticket #26627: 26627.2.diff

File 26627.2.diff, 2.5 KB (added by wonderboymusic, 21 months ago)
  • src/wp-includes/query.php

     
    32643264 
    32653265                if ( $this->is_category || $this->is_tag || $this->is_tax ) { 
    32663266                        if ( $this->is_category ) { 
    3267                                 $term = get_term( $this->get( 'cat' ), 'category' ); 
     3267                                if ( $this->get( 'cat' ) ) { 
     3268                                        $term = get_term( $this->get( 'cat' ), 'category' ); 
     3269                                } elseif ( $this->get( 'category_name' ) ) { 
     3270                                        $term = get_term_by( 'slug', $this->get( 'category_name' ), 'category' ); 
     3271                                } 
    32683272                        } elseif ( $this->is_tag ) { 
    32693273                                $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); 
    32703274                        } else { 
  • tests/phpunit/tests/query/taxQuery.php

     
    1717        protected $post_id; 
    1818 
    1919        protected $cat; 
     20        protected $uncat; 
    2021        protected $tag; 
    2122        protected $tax; 
    2223 
     
    4849                _make_cat_compat( $this->cat ); 
    4950                $this->tag = get_term( $this->tag_id, 'post_tag' ); 
    5051 
     52                $this->uncat = get_term_by( 'slug', 'uncategorized', 'category' ); 
     53                _make_cat_compat( $this->uncat ); 
     54 
    5155                add_action( 'pre_get_posts', array( $this, 'pre_get_posts_tax_category_tax_query' ) ); 
    5256        } 
    5357 
     
    106110                $this->assertEquals( get_queried_object(), $this->cat ); 
    107111        } 
    108112 
     113        function test_cat_uncat_action_tax() { 
     114                // category with tax added 
     115                add_action( 'pre_get_posts', array( $this, '_cat_uncat_action_tax' ), 11 ); 
     116 
     117                $this->go_to( home_url( "/category/uncategorized/" ) ); 
     118                $this->assertQueryTrue( 'is_category', 'is_archive' ); 
     119                $this->assertNotEmpty( get_query_var( 'cat' ) ); 
     120                $this->assertNotEmpty( get_query_var( 'tax_query' ) ); 
     121                $this->assertNotEmpty( get_query_var( 'taxonomy' ) ); 
     122                $this->assertNotEmpty( get_query_var( 'term_id' ) ); 
     123                $this->assertEquals( get_queried_object(), $this->uncat ); 
     124 
     125                remove_action( 'pre_get_posts', array( $this, '_cat_uncat_action_tax' ), 11 ); 
     126        } 
     127 
     128        function _cat_uncat_action_tax( &$query ) { 
     129                $this->assertTrue( $query->is_category() ); 
     130                $this->assertTrue( $query->is_archive() ); 
     131                $this->assertNotEmpty( $query->get( 'category_name' ) ); 
     132                $this->assertNotEmpty( $query->get( 'tax_query' ) ); 
     133                $this->assertEquals( $query->get_queried_object(), $this->uncat ); 
     134        } 
     135 
    109136        function test_tax_query_tag_action_tax() { 
    110137                // tax + tag with tax added 
    111138                $this->go_to( home_url( "/testtax/tax-slug2/?tag_id=$this->tag_id" ) );