WordPress予約投稿に失敗する原因はwp-content/object-cache.phpだった

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

WordPressの予約投稿に失敗した時に確認する4点

WordPressの予約投稿に失敗してしまいます。
image

失敗の再現性は100%です。
調査してみると、WordPressの予約投稿に失敗することは比較的よくあるケースのようです。
ネットで調べる限り、どこを調べてみても以下の点を調査するように書いてあります。

  1. ベーシック認証を使っている場合
    ベーシック認証を使っていると予約投稿に失敗するそうです。
  2. キャッシュ系プラグインを使っている場合
    WP File Cache
    WP Super Cache
    W3 Total Cache
    Quick Cache
    などのキャッシュ系プラグインを使っていると予約投稿に失敗するそうです。
  3. プラグイン「WP Missed Schedule Fix Failed Future Posts」をインストール
    予約投稿に失敗する場合の対処療法的プラグインです。
  4. 代替Cronを使って対応する
    wp-config.phpに以下の行を追加して試してみるとよいようです。
    define(‘ALTERNATE_WP_CRON’, true);

 

私の場合、本質的な原因を調べたかったので、「WP Missed Schedule Fix Failed Future Posts」は使わずに原因を調べてみました。
1. ベーシック認証は使っていません。
2. キャッシュ系プラグインはすべて無効にしています。
4. wp.config.phpにdefine(‘ALTERNATE_WP_CRON’, true)を設定してみました。
これらのすべてを試してみても予約投稿に失敗してしまいます。
ちょっと困りました。

スポンサードリンク

キャッシュ系プラグインを無効にしてもobject-cache.php、wp-cache-config.php、advanced-cache.php、db.phpがゴミで残ることがある

解決策がなくて困っていたのですが、フォルダをじっくり見てみるといくつか見慣れないファイルが残っていることがわかりました。
具体的には、以下のファイル群です。
/var/www/wordpress/wp-content/wp-cache-config.php
/var/www/wordpress/wp-content/advanced-cache.php
/var/www/wordpress/wp-content/object-cache.php

これらのファイルはキャッシュ系のプラグインを有効にした際に、pluginフォルダからwp-contentフォルダにコピーされるファイルです。
基本、キャッシュ系プラグインを無効にした場合、wp-contentフォルダから削除されるべきファイル群です。

これらのファイルですが、ひとつひとつ削除して、予約投稿との関連を調べてみました。
すると、以下のことが分かりました。

object-cache.phpが存在すると予約投稿に失敗する。
object-cache.phpが存在しないと予約投稿は成功する。

私の場合、キャッシュ系のプラグインを無効にしているので、wp-cache-config.php、advanced-cache.php、object-cache.phpは何も考えずに削除しました。
という訳で、無事に予約投稿が成功するようになりました。

結論から言うと、予約投稿に失敗する際に調査するべき「2.キャッシュ系プラグインを使っている場合」に該当していたようです。
ただ、まさか、キャッシュ系プラグインを無効化した際にゴミファイルとして削除されずに残ることがあるとは想像していませんでした。
ちなみに、予約投稿だけでなく、今まで動作しなかったBackWPupというバックアップ用のプラグインのスケジューラーも動くようになりました。

スポンサードリンク

キャッシュ系プラグインとwp-content以下のファイルの関係

WP File Cacheをインストールすると、
/var/www/wordpress/wp-content/object-cache.php
が作成されます。

WP Super Cache をインストールすると、
/var/www/wordpress/wp-content/wp-cache-config.php
/var/www/wordpress/wp-content/advanced-cache.php
が作成されます。

W3 Total Cacheをインストールすると、
/var/www/wordpress/wp-content/object-cache.php
/var/www/wordpress/wp-content/advanced-cache.php
/var/www/wordpress/wp-content/db.php
が作成されます。

これらのwp-contentフォルダにコピーされるファイルはプラグインを無効化した際に削除されるべきです。
ただ、タイミングなのか権限なのか、ゴミとして残ることはよくあるのではないかと思います。
その場合は、単にゴミとして残ったファイルを削除すればよいです。

WordPressの予約投稿、バックアッププラグインBackWPupのジョブとWordPress cron

WordPressの予約投稿やバックアッププラグインBackWPupが使っているスケジューラーはWordPress cronというものを使っています。
これはLinuxなどのOSが持っているcronと異なり疑似的なcronで、アクセスがあるたびにWordPressの内部時計を更新しているようです。
実際、nginxのaccess.logを見てみると以下のような記述があります。

従いまして、アクセスが全くない場合、WordPress cronは動作せずに、結果として予約投稿などスケジュールされたジョブは実行されません。
ある程度、正確な時間にジョブを実行させたい場合は、WordPress cronを使わずにOSのcronを使う必要があります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. […] WordPress予約投稿に失敗する原因はwp-content/object-cache.phpだった | urashita.com (新窓) […]

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です