Changeset 48356
- Timestamp:
- 07/07/2020 12:53:41 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/capabilities.php
r48167 r48356 540 540 } 541 541 542 if ( 'delete_term' === $cap && ( get_option( 'default_' . $term->taxonomy ) == $term->term_id ) ) {542 if ( 'delete_term' === $cap && ( get_option( 'default_' . $term->taxonomy ) == $term->term_id || get_option( 'default_taxonomy_' . $term->taxonomy ) == $term->term_id ) ) { 543 543 $caps[] = 'do_not_allow'; 544 544 break; -
trunk/src/wp-includes/class-wp-taxonomy.php
r48273 r48356 209 209 */ 210 210 public $rest_controller_class; 211 212 /** 213 * The default term name for this taxonomy. If you pass an array you have 214 * to set 'name' and optionally 'slug' and 'description'. 215 * 216 * @since 5.5.0 217 * @var array|string 218 */ 219 public $default_term; 211 220 212 221 /** … … 289 298 'rest_base' => false, 290 299 'rest_controller_class' => false, 300 'default_term' => null, 291 301 '_builtin' => false, 292 302 ); … … 387 397 } 388 398 399 // Default taxonomy term. 400 if ( ! empty( $args['default_term'] ) ) { 401 if ( ! is_array( $args['default_term'] ) ) { 402 $args['default_term'] = array( 'name' => $args['default_term'] ); 403 } 404 $args['default_term'] = wp_parse_args( 405 $args['default_term'], 406 array( 407 'name' => '', 408 'slug' => '', 409 'description' => '', 410 ) 411 ); 412 } 413 389 414 foreach ( $args as $property_name => $property_value ) { 390 415 $this->$property_name = $property_value; -
trunk/src/wp-includes/post.php
r48314 r48356 4034 4034 } 4035 4035 4036 // Add default term for all associated custom taxonomies. 4037 if ( 'auto-draft' !== $post_status ) { 4038 foreach ( get_object_taxonomies( $post_type, 'object' ) as $taxonomy => $tax_object ) { 4039 if ( ! empty( $tax_object->default_term ) && ( empty( $postarr['tax_input'] ) || ! isset( $postarr['tax_input'][ $taxonomy ] ) ) ) { 4040 $postarr['tax_input'][ $taxonomy ] = array(); 4041 } 4042 } 4043 } 4044 4036 4045 // New-style support for all custom taxonomies. 4037 4046 if ( ! empty( $postarr['tax_input'] ) ) { -
trunk/src/wp-includes/taxonomy.php
r48314 r48356 336 336 * @since 5.1.0 Introduced `meta_box_sanitize_cb` argument. 337 337 * @since 5.4.0 Added the registered taxonomy object as a return value. 338 * @since 5.5.0 Introduced `default_term` argument. 338 339 * 339 340 * @global array $wp_taxonomies Registered taxonomies. … … 407 408 * counting them. Default _update_generic_term_count() for taxonomies 408 409 * attached to other object types, such as users. 410 * @type string|array $default_term { 411 * Default term to be used for the taxonomy. 412 * 413 * @type string $name Name of default term. 414 * @type string $slug Slug for default term. Default empty. 415 * @type string $description Description for default term. Default empty. 416 * } 409 417 * @type bool $_builtin This taxonomy is a "built-in" taxonomy. INTERNAL USE ONLY! 410 418 * Default false. … … 432 440 433 441 $taxonomy_object->add_hooks(); 442 443 // Add default term. 444 if ( ! empty( $taxonomy_object->default_term ) ) { 445 if ( $term = term_exists( $taxonomy_object->default_term['name'], $taxonomy ) ) { 446 update_option( 'default_taxonomy_' . $taxonomy_object->name, $term['term_id'] ); 447 } else { 448 $term = wp_insert_term( 449 $taxonomy_object->default_term['name'], 450 $taxonomy, 451 array( 452 'slug' => sanitize_title( $taxonomy_object->default_term['slug'] ), 453 'description' => $taxonomy_object->default_term['description'], 454 ) 455 ); 456 457 // Update term id in options. 458 if ( ! is_wp_error( $term ) ) { 459 update_option( 'default_taxonomy_' . $taxonomy_object->name, $term['term_id'] ); 460 } 461 } 462 } 434 463 435 464 /** … … 2483 2512 } 2484 2513 2514 // Add default term. 2515 $taxonomy_obj = get_taxonomy( $taxonomy ); 2516 2517 // Default term for this taxonomy. 2518 if ( empty( $terms ) && ! empty( $taxonomy_obj->default_term ) && ! empty( $default_term_id = get_option( 'default_taxonomy_' . $taxonomy ) ) ) { 2519 $terms[] = (int) $default_term_id; 2520 } 2521 2485 2522 if ( ! $append ) { 2486 2523 $old_tt_ids = wp_get_object_terms( -
trunk/tests/phpunit/tests/taxonomy.php
r47186 r48356 966 966 $this->assertEquals( $problematic_term, $term_name ); 967 967 } 968 969 /** 970 * Test default term for custom taxonomy. 971 * 972 * @ticket 43517 973 */ 974 function test_default_term_for_custom_taxonomy() { 975 976 wp_set_current_user( self::factory()->user->create( array( 'role' => 'editor' ) ) ); 977 978 $tax = 'custom-tax'; 979 980 // Create custom taxonomy to test with. 981 register_taxonomy( 982 $tax, 983 'post', 984 array( 985 'hierarchical' => true, 986 'public' => true, 987 'default_term' => array( 988 'name' => 'Default category', 989 'slug' => 'default-category', 990 ), 991 ) 992 ); 993 994 // Add post. 995 $post_id = wp_insert_post( 996 array( 997 'post_title' => 'Foo', 998 'post_type' => 'post', 999 ) 1000 ); 1001 1002 $term = wp_get_post_terms( $post_id, $tax ); 1003 $this->assertSame( get_option( 'default_taxonomy_' . $tax ), $term[0]->term_id ); 1004 1005 // Add custom post type. 1006 register_post_type( 1007 'post-custom-tax', 1008 array( 1009 'taxonomies' => array( $tax ), 1010 ) 1011 ); 1012 $post_id = wp_insert_post( 1013 array( 1014 'post_title' => 'Foo', 1015 'post_type' => 'post-custom-tax', 1016 ) 1017 ); 1018 $term = wp_get_post_terms( $post_id, $tax ); 1019 $this->assertSame( get_option( 'default_taxonomy_' . $tax ), $term[0]->term_id ); 1020 } 968 1021 }
Note: See TracChangeset
for help on using the changeset viewer.