Changeset 48043
- Timestamp:
- 06/14/2020 09:40:10 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/post.php
r47922 r48043 4690 4690 * Set categories for a post. 4691 4691 * 4692 * If the post categories parameter is not set, then the default category is 4693 * going used. 4692 * If no categories are provided, the default category is used. 4694 4693 * 4695 4694 * @since 2.1.0 … … 4707 4706 $post_type = get_post_type( $post_ID ); 4708 4707 $post_status = get_post_status( $post_ID ); 4709 // If $post_categories isn't already an array, make it one: 4708 4709 // If $post_categories isn't already an array, make it one. 4710 4710 $post_categories = (array) $post_categories; 4711 4711 4712 if ( empty( $post_categories ) ) { 4712 if ( 'post' === $post_type && 'auto-draft' !== $post_status ) { 4713 /** 4714 * Filters post types (in addition to 'post') that require a default category. 4715 * 4716 * @since 5.5.0 4717 * 4718 * @param array $post_types An array of post types. Default empty array. 4719 */ 4720 $default_category_post_types = apply_filters( 'default_category_post_types', array() ); 4721 4722 // Regular posts always require a default category. 4723 $default_category_post_types = array_merge( $default_category_post_types, array( 'post' ) ); 4724 4725 if ( in_array( $post_type, $default_category_post_types, true ) 4726 && is_object_in_taxonomy( $post_type, 'category' ) 4727 && 'auto-draft' !== $post_status 4728 ) { 4713 4729 $post_categories = array( get_option( 'default_category' ) ); 4714 4730 $append = false; -
trunk/tests/phpunit/tests/term.php
r47341 r48043 157 157 $this->assertEquals( 1, count( $post->post_category ) ); 158 158 $this->assertEquals( get_option( 'default_category' ), $post->post_category[0] ); 159 159 160 $term1 = wp_insert_term( 'Foo', 'category' ); 160 161 $term2 = wp_insert_term( 'Bar', 'category' ); 161 162 $term3 = wp_insert_term( 'Baz', 'category' ); 163 162 164 wp_set_post_categories( $post_id, array( $term1['term_id'], $term2['term_id'] ) ); 163 165 $this->assertEquals( 2, count( $post->post_category ) ); … … 168 170 169 171 $term4 = wp_insert_term( 'Burrito', 'category' ); 172 170 173 wp_set_post_categories( $post_id, $term4['term_id'] ); 171 174 $this->assertEquals( array( $term4['term_id'] ), $post->post_category ); … … 181 184 $this->assertEquals( 1, count( $post->post_category ) ); 182 185 $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; 183 215 } 184 216
Note: See TracChangeset
for help on using the changeset viewer.