WordPress Version: 3.7
/**
* Updates an existing Category or creates a new Category.
*
* @since 2.0.0
*
* @param mixed $catarr See defaults below. Set 'cat_ID' to a non-zero value to update an existing category. The 'taxonomy' key was added in 3.0.0.
* @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values.
* @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error.
*/
function wp_insert_category($catarr, $wp_error = false)
{
$cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '');
$catarr = wp_parse_args($catarr, $cat_defaults);
extract($catarr, EXTR_SKIP);
if (trim($cat_name) == '') {
if (!$wp_error) {
return 0;
} else {
return new WP_Error('cat_name', __('You did not enter a category name.'));
}
}
$cat_ID = (int) $cat_ID;
// Are we updating or creating?
if (!empty($cat_ID)) {
$update = true;
} else {
$update = false;
}
$name = $cat_name;
$description = $category_description;
$slug = $category_nicename;
$parent = $category_parent;
$parent = (int) $parent;
if ($parent < 0) {
$parent = 0;
}
if (empty($parent) || !term_exists($parent, $taxonomy) || $cat_ID && term_is_ancestor_of($cat_ID, $parent, $taxonomy)) {
$parent = 0;
}
$args = compact('name', 'slug', 'parent', 'description');
if ($update) {
$cat_ID = wp_update_term($cat_ID, $taxonomy, $args);
} else {
$cat_ID = wp_insert_term($cat_name, $taxonomy, $args);
}
if (is_wp_error($cat_ID)) {
if ($wp_error) {
return $cat_ID;
} else {
return 0;
}
}
return $cat_ID['term_id'];
}