Make WordPress Core


Ignore:
Timestamp:
03/03/2017 02:49:13 AM (10 years ago)
Author:
boonebgorges
Message:

Taxonomy: Take 'parent' into account when checking for terms with duplicate names.

Terms with duplicate names are not allowed at the same level of a
taxonomy hierarchy. The name lookup introduced in [34809] did not
properly account for the 'parent' parameter, with the result that
the duplicate-name restriction was tighter than intended (terms
with duplicate names could not be created at different levels of
a single hierarchy).

Props mikejolley.
Fixes #39984.

File:
1 edited

Legend:

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

    r40144 r40145  
    394394                $this->assertSame( $t1, $error->get_error_data() );
    395395        }
     396
     397        /**
     398         * @ticket 39984
     399         */
     400        public function test_error_should_reference_correct_term_when_rejected_as_duplicate() {
     401                register_taxonomy( 'wptests_tax', 'post', array( 'hierarchical' => true ) );
     402                $t1 = self::factory()->term->create( array(
     403                        'name' => 'Foo',
     404                        'slug' => 'foo',
     405                        'taxonomy' => 'wptests_tax',
     406                ) );
     407
     408                $t2 = self::factory()->term->create( array(
     409                        'name' => 'Bar',
     410                        'slug' => 'bar',
     411                        'taxonomy' => 'wptests_tax',
     412                ) );
     413
     414                $t1_child = wp_insert_term( 'Child', 'wptests_tax', array(
     415                        'parent' => $t1,
     416                ) );
     417
     418                $t2_child = wp_insert_term( 'Child', 'wptests_tax', array(
     419                        'parent' => $t2,
     420                ) );
     421
     422                $error = wp_insert_term( 'Child', 'wptests_tax', array(
     423                        'parent' => $t2,
     424                ) );
     425
     426                $this->assertWPError( $error );
     427                $this->assertSame( 'term_exists', $error->get_error_code() );
     428                $this->assertSame( $t2_child['term_id'], $error->get_error_data() );
     429        }
     430
    396431        /**
    397432         * @ticket 31328
Note: See TracChangeset for help on using the changeset viewer.