From d5eac906421ebc8cbd9ff8585b1d99bd6b0b5b36 Mon Sep 17 00:00:00 2001 From: dd32 Date: Sat, 13 Feb 2010 05:52:27 +0000 Subject: [PATCH] Prevent Terms from being created in multiple taxonomies. If a slug is provided by the user, error out if it exists, else make the auto slug unique. See #11838 git-svn-id: http://svn.automattic.com/wordpress/trunk@13087 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/taxonomy.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php index 9eb4329b87..af610185cf 100644 --- a/wp-includes/taxonomy.php +++ b/wp-includes/taxonomy.php @@ -1436,6 +1436,8 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { if ( empty($slug) ) $slug = sanitize_title($name); + elseif ( is_term($slug) ) // Provided slug issue. + return new WP_Error('term_slug_exists', __('A Term with the slug provided already exists.')); $term_group = 0; if ( $alias_of ) { @@ -1452,7 +1454,9 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { } } - if ( ! $term_id = is_term($slug) ) { + if ( ! $term_id = is_term($slug, $taxonomy) ) { + // Make sure the slug is unique accross all taxonomies. + $slug = wp_unique_term_slug($slug, (object) $args); if ( !is_multisite() ) { 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);