Skip to main content

A simple wordpress api

Project description

WordPress REST API Client

Finally a simple and efficient API to work with your WordPress. A Python client for interacting with the WordPress REST API to manage content, media, and categories.

Features

  • Create posts/pages
  • Upload images from URLs
  • Create categories
  • Secure authentication handling
  • Error handling for API requests

Installation

Requirements:

  • Python 3.6+
  • WordPress site with REST API enabled (v4.7+)
  • Application password (WordPress > Users > Profile > Application Passwords)

Install dependencies:

pip install WordPRest

Initialize client

from wpAPI import WordPress
wp = WordPress(
    domain='yourdomain.com',
    username='admin',
    password='your_application_password'
)

Create a category

new_category = wp.category("Tech News")
print(f"Created category ID: {new_category['id']}")

Upload an image

image_url = "https://example.com/image.jpg"
media = wp.upload_image(image_url)
print(f"Uploaded media ID: {media['id']}")

Create a post

post_data = {
    "title": "My First API Post",
    "content": "This post was created programmatically!",
    "status": "publish",
    "categories": [new_category['id']],
    "featured_media": media['id']
}
post = wp.publish(post_data)
print(f"Published post at: {post['link']}")

API Methods

category(data) Purpose: Create a new category

Parameters: content_data (str): Category name

Returns: Category object or None on failure

upload_image(image_url)

Purpose: Upload image from URL to media library

Parameters:

image_url (str): Publicly accessible image URL

Returns: Media object or None on failure

publish(content_data, content_type="post")

Purpose: Create posts/pages

Parameters:

content_data (dict): Post/page content (see WP REST API docs)

content_type (str): "post" (default) or "page"

Returns: Post/Page object or None on failure

Content Data Structure

Typical post structure:

{
    "title": "Post Title",
    "content": "Post content",
    "status": "publish",  # or "draft"
    "categories": [1, 2], # Array of category IDs
    "featured_media": 123, # Media ID from upload_image()
    "tags": [3, 4],       # Array of tag IDs
    "excerpt": "Summary text"
}

Error Handling

Methods return None on failure

Errors are printed to console with details

Common error sources:

  • Invalid credentials

  • Network issues

  • Invalid image URLs

  • Insufficient user permissions

Important Security Practices:

  • Always use application passwords (not regular user passwords)

  • Store credentials in environment variables (not in code)

  • Use HTTPS for your WordPress site

  • Restrict API access through permissions/plugins

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wordprest-0.0.7.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wordprest-0.0.7-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file wordprest-0.0.7.tar.gz.

File metadata

  • Download URL: wordprest-0.0.7.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wordprest-0.0.7.tar.gz
Algorithm Hash digest
SHA256 7833469d8d0a391f5443b5298ba7140e37b761c5145f19cfdfbb85f35cd778b3
MD5 2f2fc3a5c42fffdd595ac89fae513cc6
BLAKE2b-256 3e300145d60a85566262a71d8c97bff50109f8c701f58d64a1bbb8cc1e0296c9

See more details on using hashes here.

File details

Details for the file wordprest-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: wordprest-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wordprest-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 36f00cceadccc14783d5da55d493fd9de5a7331708b6be2739784379928fbc38
MD5 54933fbdbc7fde6a968c7a264b248c4f
BLAKE2b-256 cddbe5766ceb0f71b11b3f3b6af44ab1357d11b4763f2d8a0903a7ee138fb637

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page