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()
を使います。
それ以外は、設定できる変数が異なる以外は概ね新規投稿の場合と同じです。