XserverでWordPressの予約投稿が動かない場合のWP-Cronトラブルシューティング

ホームページ作成

複数の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サイトで安定した予約投稿を行うポイントです。

コメント

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