WordPressで予約投稿が失敗したとき、投稿をやり直す方法です。
編集画面の公開ボタンはなく更新ボタンになってるし、当初どうしていいか分からず迷いました。
(結論を言うと更新ボタンを押せばいい。)
また、予約投稿が失敗するとできないこともあります。そのへんも含めて見ていきます。
WordPressバージョン | 5.5.3 |
WordPressには投稿する時間をスケジューリングする予約投稿があります。が、まれに失敗するときが。
投稿一覧の『公開予約』タブに表示されます。
投稿をやり直すために失敗した投稿の編集画面を開きましょう。
ただここで問題が。
公開ボタンがなくて更新ボタンになっています。
『失敗したのに投稿されてる?』
と思いますが、投稿はされていません。そりゃ失敗してるんだから。そうすると、
『どうやって公開するの?』
と思うでしょう。ボクもここでフリーズしました。一回、下書き保存ボタンで下書きに戻してから公開するのか? とか考える始末。
でも答えはもっとシンプル。更新ボタンを押す。
ややこしいですが、これが一番かんたんな正解。
できれば、ボタン名称を変えてほしい。
再スケジューリングはできない
更新ボタンを押せば即時に公開できますが、再スケジューリングはできません。
下書きに戻して公開ボタンを押してみましたが、スケジューリングも含めた公開設定の編集ができませんでした。
(SNS公開連携などがあればそれも不可。)
結局、即時投稿なので変更ボタンを押すほうがいいです。
スケジューリングが失敗するのはなぜ?
WordPressにはCron機能があります。Unix, Linuxを使ってる人にとっては馴染みのあるもの。
cronはスケジューリング機能のことで、指定時間に指定プログラムを動かすものです。
しかし、WordPressとOSのcronは名前は同じでもまったくの別物。
WordPressのcron
OSのcronの設定はルートユーザーで行うので、WordPressを実行するユーザーに設定する権限はありません。
(正確にはWebサーバーの実行ユーザー。apacheやnginxなど。)
権限を変更すればできなくもないが、セキュリティ上どうなんだろ? というのがある。WordPressから勝手にいじられても困るし。
自己責任でOSをいじるのは自由だが。
そこでWordPressのcronは、システム内で擬似的なcronを作っています。そこではOSのcronはまったく無関係。
この特殊な事情から、WordPressのcronは正確なタイムスケジューリングができません。
WordPressのcronが起動するトリガー
WordPressのシステム自体、サイトにアクセスがあってはじめて動くものです。もちろん、アクセスがないとWordPressのcronも起動しません。
つまり、サイトアクセスがないとWordPressのcronは停止したまま。スケジューリングも動かないということ。
cronが起動しないときの原因として、
キャッシュを使っている。(プラグインなど)
スケジュールの時間帯にサイトへのアクセスがない。
などがあります。キャッシュを使うと、サイトアクセスがあってもキャシュからサイト表示するので、WordPressのcronが起動しないことがあります。
もちろんですけど、cronが起動する前にWordPressでエラーが発生してもスケジューリングが失敗します。
オート再投稿のプラグイン
予約投稿の数があまりない人は自分の手で再投稿してもいいですが、多くの投稿数を予約するとき、再投稿を自動でして欲しい人のためのプラグインがあります。
スケジューリングの失敗のリカバリのプラグインはあまりありません。需要がないのかな?
(頻繁に更新しているものは特に少ない。)
個人的にはプラグインを多く使いたくないタイプなので、これぐらいなら自作してもいいかな? と思います。
投稿一覧を取得して、そこから予約投稿の失敗したものがあったら、即時に再投稿するという処理でできるはずなので。
そこまで難しくないんじゃないかな? 初見だけど。