PythonからWordPressの固定ページに投稿する方法

ブログ

WordPress固定ページへの自動投稿

固定ページを自動的に投稿したい場合、Pythonを使用してWordPressに接続し、ページを投稿することができます。

基本的な部分は通常の新規投稿作成と同じです。
新規投稿の作成については、以下の記事を参考にしてください。

必要なライブラリ

まず、PythonからWordPressにアクセスするためのライブラリが必要です。以下のようにpython-wordpress-xmlrpcライブラリをインストールしてください。

pip install python-wordpress-xmlrpc

投稿する関数の作成

以下に示す関数post_to_wp_pageを使用して、WordPressの固定ページに投稿できます。

from wordpress_xmlrpc import Client, WordPressPage
from wordpress_xmlrpc.methods.posts import NewPost

def post_to_wp_page(wp, title, body, status="draft", eye_catch_img_id=None, link_name=None, meta_data=None, date=None):

    # Pageオブジェクトを作成
    page = WordPressPage()
    page.title = title
    page.content = body
    page.post_status = status

    # メタデータが存在する場合は、カスタムフィールドを追加
    if meta_data:
        page.custom_fields = [
            {'key': 'the_page_seo_title', 'value': meta_data['title']},
            {'key': 'the_page_meta_description', 'value': meta_data['description']},
            {'key': 'the_page_meta_keywords', 'value': meta_data['keywords']},
        ]

    # パーマリンク(slug)の設定
    page.slug = link_name

    # アイキャッチ画像の設定
    if eye_catch_img_id:
        page.thumbnail = eye_catch_img_id

    # 投稿時間の設定
    if date is not None:
        page.date = date

    # WordPressにページを投稿
    page_id = wp.call(NewPost(page))

    return page_id

関数のパラメータ

  • wp: WordPressクライアントオブジェクト(Clientオブジェクト)
  • title: ページのタイトル
  • body: ページの内容
  • status: 投稿ステータス(デフォルトは"draft"
  • eye_catch_img_id: アイキャッチ画像のID(オプション)
  • link_name: パーマリンク(slug)の名前(オプション)
  • meta_data: ページのSEOメタデータ(オプション)
  • date: 投稿日時(オプション)

使用例

以下は、この関数を使用して新しい固定ページをWordPressに投稿する例です。

from wordpress_xmlrpc import Client

# WordPressサイトに接続
wp = Client('http://example.com/xmlrpc.php', 'username', 'password')

# ページの情報を設定
title = "Sample Page Title"
body = "<h1>This is a sample page</h1><p>Content of the sample page.</p>"
status = "publish"
meta_data = {
    "title": "Sample Page SEO Title",
    "description": "This is the meta description for the sample page.",
    "keywords": "sample, page, seo",
}

# ページを投稿
page_id = post_to_wp_page(wp, title, body, status=status, meta_data=meta_data)

print(f"Page posted with ID: {page_id}")

新規投稿の場合には、WordPressPost()を使いますが、固定ページの場合には、WordPressPage()を使います。
それ以外は、設定できる変数が異なる以外は概ね新規投稿の場合と同じです。

タイトルとURLをコピーしました