wp_insert_category

The timeline below displays how wordpress function wp_insert_category has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Updates an existing Category or creates a new Category.
 *
 * @since 2.0.0
 * @since 2.5.0 $wp_error parameter was added.
 * @since 3.0.0 The 'taxonomy' argument was added.
 *
 * @param array $catarr {
 *     Array of arguments for inserting a new category.
 *
 *     @type int        $cat_ID               Category ID. A non-zero value updates an existing category.
 *                                            Default 0.
 *     @type string     $taxonomy             Taxonomy slug. Default 'category'.
 *     @type string     $cat_name             Category name. Default empty.
 *     @type string     $category_description Category description. Default empty.
 *     @type string     $category_nicename    Category nice (display) name. Default empty.
 *     @type int|string $category_parent      Category parent ID. Default empty.
 * }
 * @param bool  $wp_error Optional. Default false.
 * @return int|WP_Error 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);
    if ('' === trim($catarr['cat_name'])) {
        if (!$wp_error) {
            return 0;
        } else {
            return new WP_Error('cat_name', __('You did not enter a category name.'));
        }
    }
    $catarr['cat_ID'] = (int) $catarr['cat_ID'];
    // Are we updating or creating?
    $update = !empty($catarr['cat_ID']);
    $name = $catarr['cat_name'];
    $description = $catarr['category_description'];
    $slug = $catarr['category_nicename'];
    $parent = (int) $catarr['category_parent'];
    if ($parent < 0) {
        $parent = 0;
    }
    if (empty($parent) || !term_exists($parent, $catarr['taxonomy']) || $catarr['cat_ID'] && term_is_ancestor_of($catarr['cat_ID'], $parent, $catarr['taxonomy'])) {
        $parent = 0;
    }
    $args = compact('name', 'slug', 'parent', 'description');
    if ($update) {
        $catarr['cat_ID'] = wp_update_term($catarr['cat_ID'], $catarr['taxonomy'], $args);
    } else {
        $catarr['cat_ID'] = wp_insert_term($catarr['cat_name'], $catarr['taxonomy'], $args);
    }
    if (is_wp_error($catarr['cat_ID'])) {
        if ($wp_error) {
            return $catarr['cat_ID'];
        } else {
            return 0;
        }
    }
    return $catarr['cat_ID']['term_id'];
}

WordPress Version: 5.5

/**
 * Updates an existing Category or creates a new Category.
 *
 * @since 2.0.0
 * @since 2.5.0 $wp_error parameter was added.
 * @since 3.0.0 The 'taxonomy' argument was added.
 *
 * @param array $catarr {
 *     Array of arguments for inserting a new category.
 *
 *     @type int        $cat_ID               Category ID. A non-zero value updates an existing category.
 *                                            Default 0.
 *     @type string     $taxonomy             Taxonomy slug. Default 'category'.
 *     @type string     $cat_name             Category name. Default empty.
 *     @type string     $category_description Category description. Default empty.
 *     @type string     $category_nicename    Category nice (display) name. Default empty.
 *     @type int|string $category_parent      Category parent ID. Default empty.
 * }
 * @param bool  $wp_error Optional. Default false.
 * @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);
    if ('' === trim($catarr['cat_name'])) {
        if (!$wp_error) {
            return 0;
        } else {
            return new WP_Error('cat_name', __('You did not enter a category name.'));
        }
    }
    $catarr['cat_ID'] = (int) $catarr['cat_ID'];
    // Are we updating or creating?
    $update = !empty($catarr['cat_ID']);
    $name = $catarr['cat_name'];
    $description = $catarr['category_description'];
    $slug = $catarr['category_nicename'];
    $parent = (int) $catarr['category_parent'];
    if ($parent < 0) {
        $parent = 0;
    }
    if (empty($parent) || !term_exists($parent, $catarr['taxonomy']) || $catarr['cat_ID'] && term_is_ancestor_of($catarr['cat_ID'], $parent, $catarr['taxonomy'])) {
        $parent = 0;
    }
    $args = compact('name', 'slug', 'parent', 'description');
    if ($update) {
        $catarr['cat_ID'] = wp_update_term($catarr['cat_ID'], $catarr['taxonomy'], $args);
    } else {
        $catarr['cat_ID'] = wp_insert_term($catarr['cat_name'], $catarr['taxonomy'], $args);
    }
    if (is_wp_error($catarr['cat_ID'])) {
        if ($wp_error) {
            return $catarr['cat_ID'];
        } else {
            return 0;
        }
    }
    return $catarr['cat_ID']['term_id'];
}

WordPress Version: 4.4

/**
 * Updates an existing Category or creates a new Category.
 *
 * @since 2.0.0
 * @since 2.5.0 $wp_error parameter was added.
 * @since 3.0.0 The 'taxonomy' argument was added.
 *
 * @param array $catarr {
 *     Array of arguments for inserting a new category.
 *
 *     @type int        $cat_ID               Category ID. A non-zero value updates an existing category.
 *                                            Default 0.
 *     @type string     $taxonomy             Taxonomy slug. Default 'category'.
 *     @type string     $cat_name             Category name. Default empty.
 *     @type string     $category_description Category description. Default empty.
 *     @type string     $category_nicename    Category nice (display) name. Default empty.
 *     @type int|string $category_parent      Category parent ID. Default empty.
 * }
 * @param bool  $wp_error Optional. Default false.
 * @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);
    if (trim($catarr['cat_name']) == '') {
        if (!$wp_error) {
            return 0;
        } else {
            return new WP_Error('cat_name', __('You did not enter a category name.'));
        }
    }
    $catarr['cat_ID'] = (int) $catarr['cat_ID'];
    // Are we updating or creating?
    $update = !empty($catarr['cat_ID']);
    $name = $catarr['cat_name'];
    $description = $catarr['category_description'];
    $slug = $catarr['category_nicename'];
    $parent = (int) $catarr['category_parent'];
    if ($parent < 0) {
        $parent = 0;
    }
    if (empty($parent) || !term_exists($parent, $catarr['taxonomy']) || $catarr['cat_ID'] && term_is_ancestor_of($catarr['cat_ID'], $parent, $catarr['taxonomy'])) {
        $parent = 0;
    }
    $args = compact('name', 'slug', 'parent', 'description');
    if ($update) {
        $catarr['cat_ID'] = wp_update_term($catarr['cat_ID'], $catarr['taxonomy'], $args);
    } else {
        $catarr['cat_ID'] = wp_insert_term($catarr['cat_name'], $catarr['taxonomy'], $args);
    }
    if (is_wp_error($catarr['cat_ID'])) {
        if ($wp_error) {
            return $catarr['cat_ID'];
        } else {
            return 0;
        }
    }
    return $catarr['cat_ID']['term_id'];
}

WordPress Version: 4.3

/**
 * Updates an existing Category or creates a new Category.
 *
 * @since 2.0.0
 * @since 2.5.0 $wp_error parameter was added.
 * @since 3.0.0 The 'taxonomy' argument was added.
 *
 * @param array $catarr {
 *     Array of arguments for inserting a new category.
 *
 *     @type int        $cat_ID               Categoriy ID. A non-zero value updates an existing category.
 *                                            Default 0.
 *     @type string     $taxonomy             Taxonomy slug. Defualt 'category'.
 *     @type string     $cat_name             Category name. Default empty.
 *     @type string     $category_description Category description. Default empty.
 *     @type string     $category_nicename    Category nice (display) name. Default empty.
 *     @type int|string $category_parent      Category parent ID. Default empty.
 * }
 * @param bool  $wp_error Optional. Default false.
 * @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);
    if (trim($catarr['cat_name']) == '') {
        if (!$wp_error) {
            return 0;
        } else {
            return new WP_Error('cat_name', __('You did not enter a category name.'));
        }
    }
    $catarr['cat_ID'] = (int) $catarr['cat_ID'];
    // Are we updating or creating?
    $update = !empty($catarr['cat_ID']);
    $name = $catarr['cat_name'];
    $description = $catarr['category_description'];
    $slug = $catarr['category_nicename'];
    $parent = (int) $catarr['category_parent'];
    if ($parent < 0) {
        $parent = 0;
    }
    if (empty($parent) || !term_exists($parent, $catarr['taxonomy']) || $catarr['cat_ID'] && term_is_ancestor_of($catarr['cat_ID'], $parent, $catarr['taxonomy'])) {
        $parent = 0;
    }
    $args = compact('name', 'slug', 'parent', 'description');
    if ($update) {
        $catarr['cat_ID'] = wp_update_term($catarr['cat_ID'], $catarr['taxonomy'], $args);
    } else {
        $catarr['cat_ID'] = wp_insert_term($catarr['cat_name'], $catarr['taxonomy'], $args);
    }
    if (is_wp_error($catarr['cat_ID'])) {
        if ($wp_error) {
            return $catarr['cat_ID'];
        } else {
            return 0;
        }
    }
    return $catarr['cat_ID']['term_id'];
}

WordPress Version: 4.0

/**
 * Updates an existing Category or creates a new Category.
 *
 * @since 2.0.0
 * @since 2.5.0 $wp_error parameter was added.
 * @since 3.0.0 The 'taxonomy' argument was added.
 *
 * @param array $catarr {
 *     Array of arguments for inserting a new category.
 *
 *     @type int        $cat_ID               Categoriy ID. A non-zero value updates an existing category.
 *                                            Default 0.
 *     @type string     $taxonomy             Taxonomy slug. Defualt 'category'.
 *     @type string     $cat_nam              Category name. Default empty.
 *     @type string     $category_description Category description. Default empty.
 *     @type string     $category_nicename    Category nice (display) name. Default empty.
 *     @type int|string $category_parent      Category parent ID. Default empty.
 * }
 * @param bool  $wp_error Optional. Default false.
 * @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);
    if (trim($catarr['cat_name']) == '') {
        if (!$wp_error) {
            return 0;
        } else {
            return new WP_Error('cat_name', __('You did not enter a category name.'));
        }
    }
    $catarr['cat_ID'] = (int) $catarr['cat_ID'];
    // Are we updating or creating?
    $update = !empty($catarr['cat_ID']);
    $name = $catarr['cat_name'];
    $description = $catarr['category_description'];
    $slug = $catarr['category_nicename'];
    $parent = (int) $catarr['category_parent'];
    if ($parent < 0) {
        $parent = 0;
    }
    if (empty($parent) || !term_exists($parent, $catarr['taxonomy']) || $catarr['cat_ID'] && term_is_ancestor_of($catarr['cat_ID'], $parent, $catarr['taxonomy'])) {
        $parent = 0;
    }
    $args = compact('name', 'slug', 'parent', 'description');
    if ($update) {
        $catarr['cat_ID'] = wp_update_term($catarr['cat_ID'], $catarr['taxonomy'], $args);
    } else {
        $catarr['cat_ID'] = wp_insert_term($catarr['cat_name'], $catarr['taxonomy'], $args);
    }
    if (is_wp_error($catarr['cat_ID'])) {
        if ($wp_error) {
            return $catarr['cat_ID'];
        } else {
            return 0;
        }
    }
    return $catarr['cat_ID']['term_id'];
}

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'];
}