【WordPress】下書きやレビュー待ちで保存済みの記事をCSVで一括取得し、記事の予約投稿日時を自動設定するコードサンプル【プラグイン】

WordPress

自動生成等で数千記事~数万記事をストックしており、これを時間をおいて自動的に投稿させたい…という非常にニッチな状況下でのコードサンプルです。

管理画面に機能追加する形にしていますが、必要に応じてプラグイン化してもいいでしょう。

開発した経緯

自動投稿系のプラグインで使えそうなものがなかったため。また、あっても自動投稿が失敗するケースが多かったため。

使用方法とコードサンプル

子テーマのfunctions.phpに記述して上げなおしてください。管理画面上に「レビュー待ち投稿」「CSV予約投稿」の項目が出来ます。問題が生じても責任は取れないので必ずバックアップを取ってから作業してください。

では実際のコードです。すべてfunctions.phpに記述します。

ステップ1: カスタム管理ページの追加

ステップ2: データの取得とCSVファイルの生成

自分の場合、普通に自分で記事を作る場合もあれば、自動生成をすることもあり、「下書き」だと状態が混在するため、基本的には自動生成したものは「レビュー待ち」で保存しています。

もし「下書き」を対象にする場合は‘post_status’のpendingをdraftに変更してください。またanyにすればステータスに関係なくすべての記事を取得できます。今回は投稿日時を変更するだけなので記事IDと記事タイトルだけを取得するようにしていますが、タグやカテゴリ、投稿者、記事本文なども出力させることもできます。このあたりは別のプラグインを探した方が早いです。

ステップ3: CSVアップロードフォームの追加

ステップ4: アップロードされたCSVの処理

ここまでをすべてfunctions.phpに記述してください。

CSVはUTF-8のbom無しを推奨。ダウンロードしたCSVの3列目に2022/01/01 01:12の形式で日付を記入してアップロードしてください。このあたりはエクセルをうまく使えば、数年分を一気に設定なんてことも可能です。

自分の環境では特に問題は出ていませんが、数記事程度でまずは試してみてください。

コメント