Make WordPress Core


Ignore:
Timestamp:
06/14/2020 09:40:10 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Posts, Post Types: Introduce default_category_post_types filter.

The filter allows custom post types associated with the category taxonomy to opt in to requiring a default category, same as regular posts.

Props enrico.sorcinelli.
Fixes #43516.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/term.php

    r47341 r48043  
    157157        $this->assertEquals( 1, count( $post->post_category ) );
    158158        $this->assertEquals( get_option( 'default_category' ), $post->post_category[0] );
     159
    159160        $term1 = wp_insert_term( 'Foo', 'category' );
    160161        $term2 = wp_insert_term( 'Bar', 'category' );
    161162        $term3 = wp_insert_term( 'Baz', 'category' );
     163
    162164        wp_set_post_categories( $post_id, array( $term1['term_id'], $term2['term_id'] ) );
    163165        $this->assertEquals( 2, count( $post->post_category ) );
     
    168170
    169171        $term4 = wp_insert_term( 'Burrito', 'category' );
     172
    170173        wp_set_post_categories( $post_id, $term4['term_id'] );
    171174        $this->assertEquals( array( $term4['term_id'] ), $post->post_category );
     
    181184        $this->assertEquals( 1, count( $post->post_category ) );
    182185        $this->assertEquals( get_option( 'default_category' ), $post->post_category[0] );
     186    }
     187
     188    /**
     189     * @ticket 43516
     190     */
     191    function test_wp_set_post_categories_sets_default_category_for_custom_post_types() {
     192        add_filter( 'default_category_post_types', array( $this, 'filter_default_category_post_types' ) );
     193
     194        register_post_type( 'cpt', array( 'taxonomies' => array( 'category' ) ) );
     195
     196        $post_id = self::factory()->post->create( array( 'post_type' => 'cpt' ) );
     197        $post    = get_post( $post_id );
     198
     199        $this->assertEquals( get_option( 'default_category' ), $post->post_category[0] );
     200
     201        $term = wp_insert_term( 'Foo', 'category' );
     202
     203        wp_set_post_categories( $post_id, $term['term_id'] );
     204        $this->assertEquals( $term['term_id'], $post->post_category[0] );
     205
     206        wp_set_post_categories( $post_id, array() );
     207        $this->assertEquals( get_option( 'default_category' ), $post->post_category[0] );
     208
     209        remove_filter( 'default_category_post_types', array( $this, 'filter_default_category_post_types' ) );
     210    }
     211
     212    function filter_default_category_post_types( $post_types ) {
     213        $post_types[] = 'cpt';
     214        return $post_types;
    183215    }
    184216
Note: See TracChangeset for help on using the changeset viewer.