To create a new category in WordPress using Python, you can use the WordPress REST API. Here’s a basic function that checks if a category already exists and creates it if it doesn’t:
import requests
import json
# Your WordPress site URL
site_url = 'http://your-site-url'
# Your WordPress username
username = 'your-username'
# The application password you generated
password = 'your-application-password'
def create_category(category_name):
# Check if the category already exists
url = f'{site_url}/wp-json/wp/v2/categories?search={category_name}'
response = requests.get(url, auth=(username, password))
if response.status_code == 200:
categories = json.loads(response.text)
for category in categories:
if category['name'].lower() == category_name.lower():
print(f"Category '{category_name}' already exists")
return category['id']
# The category doesn't exist, so create it
url = f'{site_url}/wp-json/wp/v2/categories'
data = {
'name': category_name
}
response = requests.post(url, auth=(username, password), json=data)
if response.status_code == 201:
category = json.loads(response.text)
print(f"Category '{category_name}' created successfully")
return category['id']
else:
print(f"Failed to create category '{category_name}': {response.text}")
return None
# Test the function
category_id = create_category('My New Category')
In this code, replace 'http://your-site-url', 'your-username', and 'your-application-password' with your WordPress site URL, your WordPress username, and the application password you generated.
β₯οΈ Info: Are you AI curious but you still have to create real impactful projects? Join our official AI builder club on Skool (only $5): SHIP! - One Project Per Month
This function first sends a GET request to search for categories with the specified name. If it finds a match, it prints a message and returns the ID of the existing category.
If it doesn’t find a match, it sends a POST request to create a new category with the specified name, then prints a message and returns the ID of the new category.
You can then use the returned category ID when creating a post to assign the post to the category.
Here’s an example:
data = {
'title': 'My New Post',
'content': 'This is the content of my new post.',
'categories': [category_id], # Assign the post to the category
'status': 'publish'
}
response = requests.post(f'{site_url}/wp-json/wp/v2/posts', auth=(username, password), json=data)
Note: You should only use Basic Auth over HTTPS in a production environment. For a more secure method, you should look into using a more secure authentication method such as OAuth.
When I tried this, I got the following error:
{"code":"rest_cannot_create","message":"Sorry, you are not allowed to create terms in this taxonomy.","data":{"status":403}}In this case, you need to set your role to “Editor” or “Administrator” because only those two roles have the right to set categories in WordPress:

If you’re interested in becoming a six-figure programmer online, check out the following tutorial on the Finxter blog:
π‘ Recommended: How to Become a Six-Figure Coder Online
