Pythonでの予約投稿について
この記事では、Pythonを使用してWordPressに記事を予約投稿する方法を解説します。予約投稿は、特定の日時に自動で記事が公開されるようにする便利な機能です。Pythonを使うことで、これを効率的に管理できます。
予約投稿は基本的な部分は新規投稿と同じです。
python-wordpress-xmlrpc
を使ったPythonからの新規投稿ができる前提で進めていきますので、やり方がわからない場合は、以下の記事を参考にまずは新規投稿の方法を確認してください。
予約投稿のやり方
予約投稿を行うためには、新規投稿時に設定したpost.post_status
の設定と、
post.date
の設定が必要となります。
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
import datetime
def post_to_wp(wp, title, body, categories=[], tags=[], status="draft", eye_catch_img_id=None):
# 新しい投稿を作成
post = WordPressPost()
post.title = title
post.content = body
post.post_status = status
post.terms_names = {
"category": categories,
"post_tag": tags,
}
# アイキャッチ画像の設定
if eye_catch_img_id:
post.thumbnail = eye_catch_img_id
# 投稿日時の設定(例としてJSTで設定)
post.date = datetime.datetime.now() - datetime.timedelta(hours=9)
# 投稿をWordPressに送信
post_id = wp.call(NewPost(post))
return post_id
wp = Client('http://your-wordpress-site.com/xmlrpc.php', 'username', 'password')
# 予約投稿する日時(例:2024年8月20日 10時30分 JST)
schedule_time = datetime.datetime(2024, 8, 20, 10, 30) - datetime.timedelta(hours=9)
post_id = post_to_wp(wp, '予約投稿テスト', 'これはPythonから予約投稿された記事です。', categories=['テクノロジー'], tags=['Python', '予約投稿'], status='future', post_date=schedule_time)
print(f'予約投稿ID: {post_id}')
-
予約投稿の日時設定
まず、予約投稿の日時を設定します。datetime
モジュールを使用して、投稿したい日時を指定します。例では、日本標準時(JST)に合わせてdatetime.timedelta
を使用して調整しています。調整しないと9時間後になってしまいます。 -
予約投稿の実行
post_to_wp
関数に予約日時を渡すことで、その日時に記事が自動的に公開されるように設定します。status
をfuture
に設定することがポイントです。 -
予約投稿の確認
投稿IDを確認することで、予約が正しく設定されたかを確認できます。