Skip to main content

A versatile Python library for seamless interaction with the WordPress REST API, including built-in SEO features and more.

Project description

wpypress

wpypress is a Python library designed for interacting with the WordPress REST API. It simplifies the process of managing posts, pages, media, categories, tags, and SEO settings on WordPress sites.

Features

  • Post Management: Create, update, delete, and list posts.
  • Page Management: Create, update, delete, and list pages.
  • Media Management: Upload, update, delete, and list media items.
  • Category & Tag Management: Create, update, delete, and list categories and tags.
  • SEO Management: Manage SEO settings using the Yoast SEO plugin.

Installation

To install wpypress, simply use pip:

pip install wpypress

Usage

Initialization

To start using the library, first, initialize the WPClient with your WordPress site credentials:

from wpypress import WPClient

wp = WPClient(
    base_url="https://your-wordpress-site.com",
    username="admin",
    password="your-password"
)

Posts

Fetch Posts

Retrieve the first page of posts:

posts, pagination = wp.posts.list(params={'per_page': 10, 'page': 1})
print(f"Total posts: {pagination['total']}")
print(f"Total pages: {pagination['total_pages']}")
print(f"Current page: {pagination['page']}\n")

Fetch a Post

Retrieve a post by ID:

post = wp.posts.get(200) # WordPress Post ID
print(f"Post Title: {post['title']['rendered']}")

Retrieve a post by slug:

post = wp.posts.get(slug='my-post-slug') # WordPress Post Slug
print(f"Post Title: {post[0]['title']['rendered']}")

Create a Post

Create a new post with categories and tags:

post = wp.posts.create(
    title="My New Post",
    content="This is the content.",
    status="publish",
    categories=[2],
    tags=[5, 6],
    featured_media=15
)

Delete a Post

To delete a post, use:

wp.posts.delete(123, force=True)

Pages

Create a New Page

To create a new page:

page = wp.pages.create(
    title="About Us",
    content="This is our about page.",
    excerpt="About page",
    status="publish"
)

Media

Upload an Image

To upload a media item, execute:

media = wp.media.upload(
    file_path='./images/photo.jpg',
    title='My Photo',
    alt_text='A beautiful photo',
    description='Uploaded via REST APIs'
)

Categories

Create a Category

new_category = wp.categories.create(
    name="Tech News",
    slug="tech-news",
    description="Technology related articles"
)

Tags

Create a Tag

new_tag = wp.tags.create(
    name="Python",
    slug="python",
    description="All posts about Python"
)

SEO

Update Post SEO (Yoast SEO)

Ensure your site has the Yoast SEO plugin activated to manage SEO settings easily:

if wp.seo.is_yoast():
    wp.seo.update(
        post_id=456,
        title="Page SEO Title",
        description="Meta description for the page.",
        og_title="OpenGraph Title for Page",
        og_description="OpenGraph Description for Page",
        type="page"
    )

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

Release: 0.1.3

Add support for slug in get method for posts and pages.

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

wpypress-0.1.3.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

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

wpypress-0.1.3-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file wpypress-0.1.3.tar.gz.

File metadata

  • Download URL: wpypress-0.1.3.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for wpypress-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5caa8c93a9532b65d58170dfe60586f77063228de621cc8a2097041b0b21267b
MD5 702c9a013bf0c345a4012ea328bd0f03
BLAKE2b-256 85e46130acc6725b899d3822e8b581bb459833d30fbdecbe3df1038b01c7858d

See more details on using hashes here.

File details

Details for the file wpypress-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: wpypress-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for wpypress-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bd10ae7f1d2e5eb1df4c820464d5333baa324753abd99e9e424b9cd615dc61f8
MD5 a0434d97ed3ec281f9e2a65c6ddaeaaf
BLAKE2b-256 7b35c5a9dd74f67fa33ae807176be0f96e9b7044e71ec0252e7c15e5146782d6

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