WordPressの固定ページをPythonから更新する方法

ブログ

この記事では、Pythonを使ってWordPressの固定ページを更新する方法について解説します。WordPressの固定ページの更新は基本的には、投稿の更新と同じです。

通常の投稿の更新については以下の記事で解説していますので、あわせて確認してください。

固定ページを更新する関数

以下が、固定ページを更新するための関数 update_wp_page です。

def update_wp_page(wp, page_id, title=None, body=None, status=None, eye_catch_img_id=None, link_name=None, meta_data=None, date=None, comment_status=None):
    # 既存のページを取得
    page = wp.call(GetPost(page_id))

    # タイトルの更新
    if title is not None:
        page.title = title

    # コンテンツの更新
    if body is not None:
        page.content = body

    # ステータスの更新
    if status is not None:
        page.post_status = status

    # コメントステータスの更新
    if comment_status is not None:
        page.comment_status = comment_status

    # メタデータの更新
    if meta_data:
        page.custom_fields = [
            {'key': 'the_page_seo_title', 'value': meta_data.get('title', '')},
            {'key': 'the_page_meta_description', 'value': meta_data.get('description', '')},
            {'key': 'the_page_meta_keywords', 'value': meta_data.get('keywords', '')},
        ]

    # パーマリンク(スラッグ)の更新
    if link_name is not None:
        page.slug = link_name

    # アイキャッチ画像の更新
    if eye_catch_img_id is not None:
        page.thumbnail = eye_catch_img_id

    # 日付の更新
    if date is not None:
        page.date = date

    # ページの更新を反映
    return wp.call(EditPost(page_id, page))

実際の使用例

from wordpress_xmlrpc import Client
from wordpress_xmlrpc.methods.posts import EditPost, GetPost

wp = Client('http://your-wordpress-site/xmlrpc.php', 'username', 'password')

page_id = 1234
update_wp_page(
    wp, 
    page_id, 
    title="新しいタイトル", 
    body="このページの内容を更新しました。", 
    status="publish", 
    link_name="new-slug",
    meta_data={
        'title': '新しいSEOタイトル',
        'description': 'ページのメタ説明文',
        'keywords': 'キーワード1, キーワード2'
    },
    date='2024-08-16T00:00:00',
)

このコードを実行すると、指定したページが更新されます。タイトルや本文、ステータス、アイキャッチ画像、メタデータなどを自由に変更することが可能です。

通常の投稿更新との違い

通常の投稿の更新についても確認いただいた場合には、何が違うのか疑問に思うかと思います。
実は投稿の更新の関数と一部を除いてほぼ同じになっています。

違うのは、カテゴリーとタグがあるかどうかです。
固定ページには、カテゴリーやタグを設定できないので、その部分は除いていますが、ほかの部分は基本的に同じ構造になっています。

したがって、別々の関数をわざわざ作らなくても、簡単に分岐する程度で管理してもよいのではないかと思います。

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