この記事では、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',
)
このコードを実行すると、指定したページが更新されます。タイトルや本文、ステータス、アイキャッチ画像、メタデータなどを自由に変更することが可能です。
通常の投稿更新との違い
通常の投稿の更新についても確認いただいた場合には、何が違うのか疑問に思うかと思います。
実は投稿の更新の関数と一部を除いてほぼ同じになっています。
違うのは、カテゴリーとタグがあるかどうかです。
固定ページには、カテゴリーやタグを設定できないので、その部分は除いていますが、ほかの部分は基本的に同じ構造になっています。
したがって、別々の関数をわざわざ作らなくても、簡単に分岐する程度で管理してもよいのではないかと思います。