diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php index b61cad10e2..8117a2aacb 100644 --- a/wp-includes/taxonomy.php +++ b/wp-includes/taxonomy.php @@ -1608,9 +1608,9 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { if ( $term_id = is_term($slug) ) { $existing_term = $wpdb->get_row( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE term_id = %d", $term_id), ARRAY_A ); - // We've got an existing term, which matches the name of the new term: - if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name ) { - // Heirarchical, and it matches an existing term, Do not allow same "name" in the same level. + // We've got an existing term in the same taxonomy, which matches the name of the new term: + if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name && is_term( (int) $term_id, $taxonomy ) ) { + // Hierarchical, and it matches an existing term, Do not allow same "name" in the same level. $siblings = get_terms($taxonomy, array('fields' => 'names', 'get' => 'all', 'parent' => (int)$parent) ); if ( in_array($name, $siblings) ) { return new WP_Error('term_exists', __('A term with the name provided already exists with this parent.')); @@ -1621,7 +1621,7 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { $term_id = (int) $wpdb->insert_id; } } elseif ( $existing_term['name'] != $name ) { - // We've got an existing term, with a different name, Creat ethe new term. + // We've got an existing term, with a different name, Create the new term. $slug = wp_unique_term_slug($slug, (object) $args); if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) ) return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);