プログラミングゆるめモ

プログラミングに関することをゆるくメモしてます

PHP WordPress XML-RPC

[WordPress]XML-RPC を使ってWordPressブログに予約投稿

2017/05/27

WordPressのブログに、XML-RPC 経由で予約投稿してみます。
予約投稿とは、未来の日付で投稿を行い、その日時になったら自動で公開されるというものです。
決まった日時に投稿を行いたい場合に、事前に記事を作成しておき公開日時を設定すれば、忘れることなく自動的に投稿できる便利な機能ですね。
WordPressの投稿入力画面では、
「すぐに公開する」の日時を未来に設定して、「公開」ボタンを押せば、自動的にステータスが「予約済み」になります。

XML-RPC で投稿を行うには
'metaWeblog.newPost'メソッドを使いますが
投稿する日時の設定として、'dateCreated'に公開日時(未来の日時)を設定するのですが
それだけでは失敗します。失敗するというのは、日付が未来になってすぐに公開されてしまい、ステータスが「予約済み」にはなりません。未来の日時で公開されているというおかしな状態になるという訳です。

ポイントとしては
'post_status' を 'publish' にする。'future' ではなく'publish'です。
'dateCreated' に公開日時を設定する
'date_created_gmt' に、GMT公開日時を設定する
'metaWeblog.newPost'のpublishパラメーターは2(予約投稿)にする
上記を行うと、予約投稿は成功するようです。
例として、2020年12月31日 19時10分に自動的に投稿されるようにしてみます。
ちょっと手抜き的な記述ですが、予約投稿で必要な設定項目については、伝わるのではないかと思います。
GMTには9時間前の時間を直接入れています(手抜き)

 
[XML-RPC] テーマ特有のカスタムフィールドを設定する
[XML-RPC]固定ページの扱い方 固定ページの一覧を取得する
[XML-RPC]ファイルをアップロードする

-PHP, WordPress, XML-RPC