WP-Cronは訪問をきっかけに予定処理を確認するWordPressの仕組みで、サーバーCronは決めた時刻にサーバーから処理を呼び出す仕組みです。 アクセスが少なく、予約メールや在庫同期などを時刻どおり動かしたいサイトでは、サーバーCronへ切り替える価値があります。通常ブログで予約投稿が問題なく動くなら、急いで変更する必要はありません。

この記事では、まずWP-Cronが遅れる条件を確認し、サーバーCronを追加してからWP-Cronを止める安全な順番、二重実行と完全停止を避ける確認方法を説明します。

WP-CronとサーバーCronの違い

項目 WP-Cron サーバーCron
起動 サイトアクセスをきっかけに確認 サーバーの時刻設定で呼び出す
低アクセス 実行が遅れる可能性 設定時刻に起動しやすい
設定 WordPress標準 サーバーパネルとwp-config.php
失敗リスク 遅延・重複 URL・コマンド・間隔の誤りで停止

WP-Cronは厳密な時刻保証ではありません。アクセスがない時間は確認が遅れます。一方、サーバーCronも実行先やPHPパスを間違えれば動きません。「サーバーCronにすれば必ず成功」ではなく、実行ログと対象イベントで確認します。

ミカ
ミカ

WP-Cronは時計のように毎分動いていると思っていました。訪問がきっかけなら、夜中のアクセスが少ないサイトで遅れる理由が分かります。

佐藤さん
佐藤さん

仕組みが分かると症状とつながるね。
ただしアクセスが少ないだけでなく、キャッシュやループバック失敗もあるから、サイトヘルスも見よう。

ミカ
ミカ

サーバーCronを作れば、WP-Cronをすぐ無効にして軽くできますか?まだ新しい方が動くか自信がありません。

佐藤さん
佐藤さん

無効化は最後だよ。
まずサーバー側を追加し、イベントが一回動いた証拠を確認してから切り替えようね。

切り替えが必要か確認する

  1. 「ツール → サイトヘルス」でループバックリクエストや予定イベントの問題を見る。
  2. 遅れた処理名、予定時刻、実行時刻を記録する。
  3. 低アクセス時間だけ遅れるか確認する。
  4. キャッシュ・WAF・Basic認証が wp-cron.php を妨げていないか見る。
  5. プラグイン固有のCron一覧やログがあれば対象イベントを確認する。

予約投稿だけが一度遅れた場合、タイムゾーンや投稿状態の問題もあります。複数の予定処理がアクセスの少ない時間に継続して遅れるなら、サーバーCronの検討材料になります。

安全な切り替え順

  1. サーバーパネルのCron設定画面を開く。
  2. タイムゾーンと最小実行間隔を確認する。
  3. サーバー公式のWordPress向けコマンドまたはURL呼び出し例を確認する。
  4. 5分〜15分など、必要性に合う過度でない間隔で追加する。
  5. WP-Cronをまだ有効のまま、対象イベントが実行されるか待つ。
  6. 実行時刻とログを確認する。
  7. 正常なら wp-config.php define( 'DISABLE_WP_CRON', true ); を適切な位置に追加する。
  8. 次の実行も成功し、二重実行がないことを確認する。
重要
先に DISABLE_WP_CRON を設定しないでください。サーバーCronが未完成のまま無効化すると、予約投稿、通知、プラグインの定期処理がすべて止まる可能性があります。
ミカ
ミカ

Cron設定に「毎分」が選べたので、細かいほど遅れなくて安心かと思いました。メール処理が5分ごとなら、毎分にする必要はないんですね。

佐藤さん
佐藤さん

必要以上に呼ぶと、同じサイトへ余計な負荷を増やすよ。
イベントの必要間隔とサーバーの最小間隔を合わせよう。

ミカ
ミカ

実行ログが一回成功したら、wp-config.phpを書き換えていいですか?行を入れる場所も少し不安です。

佐藤さん
佐藤さん

既存定義の重複がないか検索し、wp-config.php末尾の編集終了を示す案内より前に一度だけ置こうか。
変更前のファイルを保存し、次の実行まで確認すれば戻せるよ。

二重実行・完全停止を見分ける

症状 原因候補 確認
メールが2通届く WP-CronとサーバーCronの二重起動 定義とCron設定を照合
予定処理が全停止 サーバーCron失敗後にWP-Cron無効 一時的に定義を戻し実行先修正
実行時刻がずれる サーバーとWordPressのタイムゾーン 両方の表示時刻を確認
403・401 WAF・Basic認証 Cron呼び出しのアクセス許可

完全停止した場合は、まず DISABLE_WP_CRON を変更前へ戻し、WordPress標準の呼び出しで動くか確認します。サーバーCronを削除する前にコマンド、PHPパス、対象URL、実行ログを保存します。

Cron設定を管理しやすいサーバー

サーバーCronが必要なサイトは、Cron設定画面、PHPパス、ログ、サポートの分かりやすさを重視します。通常ブログだけなら、この機能のために乗り換える必要はありません。

エックスサーバー

エックスサーバー

Cron設定、PHP、ログを同じサーバーパネルで確認し、定期処理を安定させたい人向けです。

向いている人: 予約メールや同期処理を時刻どおり動かしたいWordPress運営者

利点: WordPress運用の設定情報とサポートを探しやすい

注意点: Cronコマンドと最小間隔は最新マニュアルを確認し、WP-Cron無効化は実行成功後に行ってください。

料金: スタンダード月額693円〜目安(キャンペーン・契約期間で変動)

エックスサーバーのCron対応と料金を見る
ConoHa WING

ConoHa WING

WordPress管理とサーバー設定を一つの画面で進め、定期処理の環境も確認したい人の比較候補です。

向いている人: ブログから予約・通知機能へ運用を広げたい人

利点: WordPressかんたんセットアップとPHP環境をまとめて管理しやすい

注意点: Cronの提供条件・設定方法・実行間隔は契約前に公式情報で確認してください。

料金: WINGパック月額659円〜目安(キャンペーン・契約期間で変動)

ConoHa WINGの最新機能と料金を見る

広告・PRを含みます。料金・提供条件は公式ページで最新情報をご確認ください。

切り替え後24時間の確認

  • 対象イベントが予定間隔で実行
  • メール・同期・予約が重複しない
  • CPU負荷が周期的に跳ねすぎない
  • サイトヘルスに予定イベント遅延がない
  • エラーログにCron関連の失敗がない

切り替え前によく迷う3つの判断

WP-Cronは何分間隔で呼び出せばいい?

最初は5〜15分間隔を目安にし、予約投稿や定期メールが許容時間内に動くか確認します。毎分実行は処理回数が増えるため、記事公開が少ない個人サイトで最初から選ぶ必要はありません。締切時刻が厳しい処理だけ、プラグイン仕様とサーバー負荷を確認して短くします。

DISABLE_WP_CRONを追加するだけで軽くなる?

いいえ。無効化だけでは予定処理の呼び出し元が消え、予約投稿や更新確認が止まる可能性があります。先にサーバーCronを登録し、実行履歴や予約投稿で成功を確認してから無効化してください。軽さよりも、処理を取りこぼさない順番が優先です。

切り替え後に予約投稿が動かなかったら?

まずwp-config.phpへ追加した行を一時的にコメントアウトするか削除し、標準WP-Cronへ戻します。次にCronの実行URL、PHPコマンド、サイトURL、間隔を一つずつ確認してください。一度に複数項目を直すと原因が分からなくなるため、変更時刻と結果をメモして再実行します。

切り替え当日だけでなく、翌日の定期処理まで確認すると、日次処理の取りこぼしや二重実行にも気づけます。サーバーパネルの実行履歴、WordPressの予約投稿、通知メールの3か所で同じ時刻を照合できれば、運用を継続できる状態です。

まとめ:新しい呼び出しを確認してから標準を止める

ミカ
ミカ

WP-Cronを止めることから始めると思っていました。新しいCronを追加して、一回動いた証拠を見てから切り替えるなら怖さが減ります。

佐藤さん
佐藤さん

止める前に代わりを働かせる順番を守れたね。
予定処理は見えにくいから、実行時刻と結果を記録することが安心につながるよ。

ミカ
ミカ

毎分にしたくなる気持ちは残りそうですが、必要な間隔だけにします。二重メールも翌日まで確認します。

佐藤さん
佐藤さん

それで大丈夫だよ。
一度の成功で終わらず、次の周期まで見て、問題があれば標準WP-Cronへ戻せる状態を残そうね。

サーバーCronへの切り替えは、追加、実行確認、WP-Cron無効化、次周期確認の順です。アクセスが少ない時間の重要処理にだけ使い、通常運営で問題がなければ変更しません。