複数のWordPressサイトで予約投稿やAction Schedulerが正常に動かない場合、WP-Cronの問題やサーバー設定の影響が考えられます。この記事では、Xserver環境でWP-Cronを確認・修正する方法や、よくある原因を解説します。
WP-Cronの基本と仕組み
WordPressのCronは擬似的なCronで、アクセスがあったタイミングでイベントが実行されます。
DISABLE_WP_CRON が false であれば、通常アクセス時に予約イベントがトリガーされます。しかし、アクセスが少ないサイトや特定のサーバー設定により、予約投稿が遅延することがあります。
Action Schedulerの未実行問題
Action Scheduler は WooCommerce や一部プラグインが使う内部Cronで、wp_cronと連動しています。
「action_scheduler_run_queue が実行されない」「最後の実行が数時間前」と表示される場合、WP-Cron自体が正しく動作していない可能性があります。
確認すべきXserver側の設定
1. PHPのCLIが利用可能か確認(wp-cronをサーバCronで動かす場合)
2. XserverのCron設定でサイトごとのWP-Cron呼び出しが設定されているか
3. サーバーのmod_securityやアクセス制限でcron.phpへのアクセスがブロックされていないか
4. リソース制限(CPU・メモリ)によるHTTP 429 エラーが出ていないか
WP-Cronを強制実行してテスト
ブラウザで wp-cron.php にアクセスするか、CLIから以下を実行します。
php /home/ユーザー/public_html/サイト名/wp-cron.php
これで予約投稿やAction Schedulerが正常に動くか確認できます。
サーバCronでの代替実行
DISABLE_WP_CRON を true に設定し、XserverのCronで wp-cron.php を毎分実行する方法もあります。
- wp-config.php に define(‘DISABLE_WP_CRON’, true); を追加
- Xserver Cron に「毎分 php /home/ユーザー/public_html/サイト名/wp-cron.php」を登録
こうすることで、アクセスに依存せず安定した予約投稿が可能です。
その他の注意点
・キャッシュプラグインがCronの動作に影響していないか
・HTTP 429 エラーはリクエスト過多のサインなので、外部アクセス制限やプラグインの負荷を見直す
・複数サイトで同時にCronを実行するとサーバー負荷が高くなる場合があります
まとめ
WP-Cronの不具合は、サーバー設定、アクセス状況、プラグインの影響など複合的な原因で発生します。まずは強制実行で動作確認し、問題があればXserverのCronでwp-cron.phpを定期実行する設定に切り替えるのが有効です。
さらに、HTTP 429 やキャッシュプラグインの影響を確認し、リソース制限を超えないよう管理することが、複数WordPressサイトで安定した予約投稿を行うポイントです。


コメント