PythonでWordPressに予約投稿する方法

ブログ

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}')
  1. 予約投稿の日時設定
    まず、予約投稿の日時を設定します。datetimeモジュールを使用して、投稿したい日時を指定します。例では、日本標準時(JST)に合わせてdatetime.timedeltaを使用して調整しています。調整しないと9時間後になってしまいます。

  2. 予約投稿の実行
    post_to_wp関数に予約日時を渡すことで、その日時に記事が自動的に公開されるように設定します。statusfutureに設定することがポイントです。

  3. 予約投稿の確認
    投稿IDを確認することで、予約が正しく設定されたかを確認できます。

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