From 5fce3217ade001f6bfd191068fb0c6a9a1eec474 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 30 Jan 2012 18:19:27 +0000 Subject: [PATCH] Check the return of wp_insert_term() for WP_Error or array. Prevents fatal erros and failure to add categories when adding terms via ajax. Props mdawaffe. fixes #17938 #17939 git-svn-id: http://svn.automattic.com/wordpress/trunk@19792 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/ajax-actions.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php index a823cfa217..921f923b01 100644 --- a/wp-admin/includes/ajax-actions.php +++ b/wp-admin/includes/ajax-actions.php @@ -234,10 +234,12 @@ function _wp_ajax_add_hierarchical_term( $action ) { $category_nicename = sanitize_title($cat_name); if ( '' === $category_nicename ) continue; - if ( !($cat_id = term_exists($cat_name, $taxonomy->name, $parent)) ) { - $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent)); - $cat_id = $new_term['term_id']; - } + if ( !$cat_id = term_exists( $cat_name, $taxonomy->name, $parent ) ) + $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) ); + if ( is_wp_error( $cat_id ) ) + continue; + else if ( is_array( $cat_id ) ) + $cat_id = $cat_id['term_id']; $checked_categories[] = $cat_id; if ( $parent ) // Do these all at once in a second continue; @@ -488,10 +490,12 @@ function wp_ajax_add_link_category( $action ) { $slug = sanitize_title($cat_name); if ( '' === $slug ) continue; - if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) { + if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) $cat_id = wp_insert_term( $cat_name, 'link_category' ); - } - $cat_id = $cat_id['term_id']; + if ( is_wp_error( $cat_id ) ) + continue; + else if ( is_array( $cat_id ) ) + $cat_id = $cat_id['term_id']; $cat_name = esc_html(stripslashes($cat_name)); $x->add( array( 'what' => 'link-category',