wp_create_category( int|string $cat_name, int $category_parent ): int|WP_Error

Adds a new category to the database if it does not already exist.


Category name.
ID of parent category.



More Information


  • $cat_name: Name for the new category.
  • $parent: Category ID of the parent category.


  • 0 on failure, category id on success.

wp_create_category() is a thin wrapper around wp_insert_category().

Because this is a wrapper, it is not suitable for entering a complex custom taxonomy element.

If the category already exists, it is not duplicated. The ID of the original existing category is returned without error.


function wp_create_category( $cat_name, $category_parent = 0 ) {
	$id = category_exists( $cat_name, $category_parent );
	if ( $id ) {
		return $id;

	return wp_insert_category(
			'cat_name'        => $cat_name,
			'category_parent' => $category_parent,



User Contributed Notes

  1. Skip to note 3 content

    An example of how you can use the wp_create_category() function.

    $category_name = 'New Category'; // Name of the category you want to create
    $parent_category_id = 3; // ID of the parent category (change this to your desired parent category)
    // Attempt to create a new category
    $category_id = wp_create_category( $category_name, $parent_category_id );
    if ( ! is_wp_error( $category_id ) ) {
        echo 'Category created with ID: ' . $category_id;
    } else {
        echo 'Error creating category: ' . $category_id->get_error_message();

    In this example:

    $category_name is set to “New Category”, which is the name of the category you want to create.
    $parent_category_id is set to 3, which is the ID of the parent category where you want to create the new category. You should replace this with the actual ID of the desired parent category.
    The wp_create_category() function is called with both the category name and the parent category ID as arguments. If the category is successfully created, it will return the category ID as an integer. If there’s an error during the creation process, it will return a WP_Error object.

    The code then checks if the result is a WP_Error object using is_wp_error(). If it’s not an error, it means the category was created successfully, and it will display a message with the category ID. If an error occurred, it will display an error message using the get_error_message() method of the WP_Error object.

  2. Skip to note 4 content


    In order to create a simple category use:

     wp_create_category( 'My category name' );

    To create a category that is a child of Uncategorized (or whatever category has the ID 0), use:

    wp_create_category( 'Child of Uncategorized', 0 );

    To get id of category created and put value in variable:

    $id = wp_create_category( 'Child of Uncategorized', 0 );

You must log in before being able to contribute a note or feedback.