【初心者必見】wordpressで予約投稿が失敗する原因調査と対策

スケジューリングwordpress
この記事は約6分で読めます。
サチコ
サチコ

なんだか最近、予約投稿でやたら失敗するのはなぜ?

じぇいかわ
じぇいかわ

予約投稿できないのは問題だね。それでは原因と対策を考えていこう!

バンバン記事を書いていった時に、たまに予約投稿にして毎日定時に投稿しようって思いますよね。そんな時にもし失敗して投稿できなかった場合、ガッカリしてしまうと同時に自分のスケジュールが狂っちゃいますよね。

 

それではどうして予約投稿の失敗が発生するのか調べ、快適なブログライフを継続するため対処していきましょう。

 

★この記事を読むと、予約投稿で失敗する理由と対策を学ぶことができます。

 

wordpressで予約投稿が失敗する原因

wordpressで予約投稿が失敗する原因

wordpressで予約投稿が失敗する原因には何があるのでしょうか?まず自分の場合ですが、テーマを変えてから発生するようになったんです。

 

これより、テーマによる影響も考えられると思うんですよね。

 

その前に、wordpressが予約投稿する原理を調べてみました。一般的に考えた時に、Linuxを学んだ人ならわかると思いますが、自動で何かを実行させる時にはcronというコマンドを使用します。これは曜日、時間を細かく指定することができ、かつ実行するコマンドも指定できるのです。

 

最初はこのサーバーOSのLinuxにあるcronを使用しているのかと思いましたら、wordpressはどうやら違うようなんですね。確かに、よく考えてみればレンタルサーバーですから、サーバーの基本設定を設定変更できることはそんなに多くないと思いました。

 

実はwordpressの場合には、偽cronと言うか代替cronのような振る舞いをするコマンドがあるみたいなんです。それは、基本DIRの直下にあるwp-config.php内でcron設定をしているようなんです。

 

そしてこの代替cronは決められた時間に動作するわけでは無いということがわかりました。

 

実は、予約投稿をした場合には、予約した時間帯でユーザーがサイトにアクセスしたことをトリガーにして、予約投稿がかかる仕組みのようなんです。

 

ということは、その時間帯に誰もアクセスしないと予約投稿はされずに失敗となってしまうのです。実際には、指定した時間のどのくらいの範囲内でアクセスをチェックしているのかは、ちょっと調べても分かりませんでした。

 

いずれにしても、予約投稿できないのは指定した時間の前後でユーザーアクセスが無い事が原因のようです。

 

そういえば、最近のブログは1日おきに投稿しているので投稿日にユーザーがアクセスしないケースが増えたんだろうと予測がされます。

 

wordpressで予約投稿が失敗する原因は実はそれだけではない

wordpressで予約投稿が失敗する原因は実はそれだけではない

wordpressで予約投稿が失敗する原因は先の指定時刻付近でのユーザーアクセスが無いだけでもないみたいなんですね。

 

正確に言うと、wp-config.php内でWP_CRONを呼び出しているかがポイントなんです。

 

実は最初にテーマを変えてから発生したと書きましたが、最初に使用していたルクセリタスにはこのWP_CRONを呼び出す記述が有ったのですが、変更したcocoonにはそもそもその記述がwp-config.phpの中に無いんですよ。

 

無いからマズイのか?というと、別の問題で無いほうが良いみたいなのです。

 

このWP_CRONを動作させると、ユーザーがサイトをアクセスするたびに、サイトリソースを大量に使用するのでパフォーマンスが低下してしまうようなんです。

 

そう、一見DDosの攻撃を受けているかのようにアクセスをするので、自分みたいな訪問者が少ないサイトでは未だ良いが、有名なサイトでは表示速度などが落ちる可能性があるのです。

 

最適化を書けた時に外れたのかな?

 

このWP_CRONの記述がない場合には、wp-config.phpの最初に1行下記のコードを追加すれば動くように成るみたいです。

 

define('ALTERNATE_WP_CRON', true);

 

ただプラグインとの相性は良くないようです。

 

また、極稀にですがタイムゾーンが間違っていると日本時間が変わってしまうので投稿されないというケースもあるみたいです。(自分の場合はちゃんと有っていました)

 

パフォーマンスへの影響がある事と、プラグインとの相性が悪いということを考えると、この記述はしないほうが良いと判断し、自分の場合はやめました。

 

既に記述されている場合で、この機能を停止させるにはwp-config.phpに次の1行を追加すれば、機能は停止するようです。

define('DISABLE_WP_CRON', 'true');

 

wordpressで予約投稿が失敗するに対する対策は

wordpressで予約投稿が失敗するに対する対策は

wordpressで予約投稿が失敗する原因もわかりましたが、一体どのように対処すればよいでしょうか。

 

やはりプラグインで対処するのが一番だと自分は判断しました。使ったプラグインはScheduled Post Triggerというものです。

Scheduled Post Trigger

Scheduled Post Trigger
Checks to see if any scheduled posts have been missed. If so, it publishes them. NOTE: This plugin is meant as a stop-gap until you and your web host …

 

Scheduled Post Triggerこれは、予約投稿に設定し失敗した投稿が無いかをチェックし、発見した場合には直ちに投稿してくれるというすぐれものです。

 

もし、手動で実施する場合には、まず投稿が予定通りに行われているかを確認する必要があり、投稿されていない場合には、管理画面にログインして更新のボタンを押し、投稿させる必要があり非常に面倒です。

 

この一連の作業を自動で行ってくれるというものなんですね。更に、このプラグインはバックグランドで動作するので、設定もする必要がなくインストールして有効化すればそれで終わりです。

 

これを導入して、どのように成るかを観察しました。導入後は予約投稿の失敗はなく成りました。

 

wordpressで予約投稿が失敗する原因調査と対策 まとめ

wordpressで予約投稿が失敗する原因調査と対策 まとめ

wordpressで予約投稿が失敗する原因調査と対策について今回は書いてきました。

 

発生する原因として考えられるのは

 

  1. テーマによる違い
  2. 予約投稿時間近辺でサイトにアクセスが無かった
  3. wp-config.php無いにWP_CRONのコマンドが無い
  4. タイムゾーンがずれている

が考えられました。

 

しかし、サイトパフォーマンスを最優先したため、wp-config.php等を修正することはやめて、プラグインで対処することにしたのが自分の対策です。

 

もし、あなたがwp-config.php内にWP_CRONの記述があって失敗しているような場合は、WP_CRONの動作を止めてプラグインを入れるほうが良いかもしれませんね。

 

これでまた、記事をバンバン書いて予約投稿で公開待ちにすることができるようになりました。

人気記事 何でwordpressはセルフピンバックするんだ?無駄なピンバックを回避してみた。
人気記事 Google Search Consoleでエラーを修正してくれと怒られた

 

コメント

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