WordPressには、WP-Cronとして知られる組み込みのスケジューリングシステムが含まれており、特定の時間に投稿を公開したり、トリガーメールを送信したり、自動バックアップを実行したりするなどのスケジュールされたタスクを管理する責任があります。
WP-Cronは便利で多くのウェブサイトでうまく機能しますが、限界もあります。一般的な問題の1つは、特にトラフィックの少ないサイトでは、スケジュールされたタスクを見逃すことがあることです。
より信頼性の高い代替手段は、ウェブホスティングプロバイダーのサーバーによって管理される適切なcronジョブを設定することです。これらのcronジョブはサイトの訪問とは独立しており、正確なスケジュールで実行されるため、タスクが一貫して時間通りに実行されることが保証されます。
WPBeginnerでは、すべてのスケジュールされたタスクが時間通りに実行されることを保証するために、サーバーに直接設定された適切なcronジョブに依存しており、このアプローチは私たちにとって一貫して優れた結果をもたらしています。これは、トラフィックが少ない時期やサーバーアクティビティが高い時期でも、遅延やタスクのスキップを心配する必要がないことを意味します。
この記事では、WordPressでwp-cronを簡単に無効にする方法を示し、適切なcronジョブを設定する2つの方法を説明します。

wp-cronを無効にする理由
WordPressウェブサイトには、wp-cronと呼ばれる組み込みのスケジューリングシステムがあります。これは、アップデートの確認、スケジュールされた投稿の公開、定期的なバックアップの自動作成、トリガーメールの送信など、時間に関係するタスクを実行します。
WordPressのcronジョブの表示と制御方法に関するガイドで、さらに詳しく学ぶことができます。

問題は、WordPressが誰かがあなたのウェブサイトを訪問したときにのみ、スケジュールされたジョブを確認するように促されることです。これはほとんどのサイトでは十分機能しますが、小さいサイトでは問題が発生することがあります。
たとえば、サイトのトラフィックが少ない場合、スケジュールされた投稿が時間どおりに公開されない可能性があります。ウェブサイトのトラフィックが多い場合、wp-cronは頻繁にチェックされるため、ウェブサイトのパフォーマンスに影響を与える可能性があります。
スケジュールされた投稿の欠落エラーを修正したいだけであれば、無料のプラグインMissed Scheduled Publisherを使用できます。しかし、スケジュールされたアクションの問題をすべて解決したい場合は、実際のcronジョブが必要です。
実際のcronジョブは、WordPressではなく、Webホスティングサーバーのオペレーティングシステムによって実行されます。これにより、スケジュールされたタスクをより確実にチェックするように設定できます。デフォルトでは、WordPressはサーバーレベルでこれを設定するアクセス権を持っていませんが、私たちのチュートリアルに従うことで簡単に設定できます。
それでは、wp-cronを簡単に無効にして、適切なcronジョブを設定する方法を見てみましょう。このチュートリアルでは次のことをカバーします。
WordPressでwp-cronを無効にする
wp-cronを無効にするには、WordPressのコア設定ファイルであるwp-config.phpを編集する必要があります。これはWordPressサイトのルートフォルダにあり、FTPクライアントまたはウェブホスティングコントロールパネルのファイルマネージャーを使用する必要があります。
このファイルには多くの機密情報が含まれており、誤った変更を行うとWordPressサイトが破損する可能性があります。念のため、最初にファイルのバックアップを作成することをお勧めします。方法は、WordPressでwp-config.phpを編集する方法に関するガイドに従ってください。
次のコードを、「That’s all, stop editing! Happy blogging」という行の直前に wp-config.php ファイルに貼り付ける必要があります。
define('DISABLE_WP_CRON', true);
このようになります。

その後、ファイルを保存してウェブサイトに再度アップロードします。
WordPressは、誰かがあなたのウェブサイトを訪問してもwp-cronをトリガーしなくなります。
方法1:WordPressホストで適切なcronジョブを設定する
次に、スケジュールされたタスクを実行するための適切なcronジョブを設定する必要があります。この設定方法は、WordPressホスティングプロバイダーが提供するツールによって異なります。
cronジョブを設定する最も簡単な方法は、多くのウェブホスティングプランに含まれている人気のウェブサイトコントロールパネルであるcPanelを使用することです。これにはBluehostも含まれます。このチュートリアルではBluehostのcPanelを使用します。
注意: 一部のウェブホストでは cPanel を使用しておらず、cron ジョブの作成を許可していない場合もあります。不明な場合は、ホスティングプロバイダーに問い合わせるか、サポートドキュメントを参照してください。サードパーティの cron サービスを常に使用できます(方法 2 を参照)。
ホスティングアカウントにログインして「Webサイト」ページに移動したら、上部から「詳細」タブに切り替えます。
ここで下にスクロールして「Cronジョブ」セクションを見つけ、隣の「管理」ボタンをクリックします。このセクションの位置は、ホスティングプロバイダーによって異なる場合があることに注意してください。

これにより、新しいcronジョブを作成できる新しいページに移動します。
Linuxコマンドに関する十分な知識が必要であるという警告については心配しないでください。必要なコマンドは1つだけであり、そのコマンドを以下に正確に示します。
必要に応じて、cronジョブ通知が送信されるメールアドレスを変更できます。デフォルトのアドレスは、ウェブホスティングにサインアップした際に入力したアドレスであり、ほとんどのウェブサイトで問題なく機能します。

次に、「新しいcronジョブを追加」セクションまでスクロールダウンして、cronジョブを設定します。
まず、cronジョブをどのくらいの頻度で実行するかを決定する必要があります。これは好きなものにできますが、30分間隔をお勧めします。
「共通設定」ボタンをクリックし、ドロップダウンから時間間隔を選択する必要があります。「1時間に2回」は、確信がない場合はほとんどのサイトに適した選択肢です。

次に、WordPress にスケジュールされたタスクを実行するように要求するコマンドを入力できます。次のコードを「コマンド」フィールドに貼り付ける必要があります。
wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
「example.com」を独自のウェブサイトのURLに置き換えてください。
これが完了したら、「新しいCronジョブを追加」ボタンをクリックすると、新しいcronジョブが以下のリストに追加されているのが表示されます。

WordPress は、ウェブサイトへのアクセス時ではなく、30 分ごとにスケジュールされたタスクをチェックして実行するようになります。
方法2:サードパーティサービスを使用して適切なcronジョブを設定する
ホスティングプランで適切なcronジョブが提供されていない場合、または設定が難しい場合は、代わりにサードパーティのcronサービスを使用できます。
これらは、シンプルなインターフェースを使用して cron ジョブを設定できる専用のサービスです。いくつか優れたものを紹介します。
- EasyCronには月額更新が必要な無料プランがあります
- cron-job.orgは無料サービスです
- Cronitorは、cronジョブが1つだけ必要な場合は無料です
- SetCronJobは、年間10ドルから始まる有料プランを提供しています
このチュートリアルでは、使いやすく、無料プランがほとんどの初心者ユーザーに適しているため、EasyCronを使用します。
無料アカウントを作成したら、左側の「+ Cron Job」ボタンをクリックして新しいcronジョブを作成できます。

これにより、「cronジョブの作成」画面が表示されます。まず、「呼び出すURL」フィールドに次のURLを貼り付ける必要があります。
https://example.com/wp-cron.php?doing_wp_cron
「example.com」を自分のサイトのURLに置き換えてください。

その後、「実行時期」ドロップダウンから「30分ごと」を選択する必要があります。終了したら、「Cronジョブを作成」ボタンをクリックして設定を保存することを忘れないでください。
新しいcronジョブがリストに追加され、ウェブサイトのwp-cronが30分ごとに実行されます。

ボーナス:WordPressブログ投稿を自動スケジュールする
適切なcronジョブを設定すると、WordPressブログのすべてのスケジュールされたタスクが問題なく実行されます。ブログ投稿の自動スケジュールも可能です。
これにより、事前に選択した公開日にランダムに記事を選択して公開できます。これを行うには、PublishPress Plannerプラグインをインストールして有効にする必要があります。
有効化したら、プランナー » 設定 ページにアクセスし、上部から「コンテンツカレンダー」タブに切り替えます。ここで、「公開時間を表示するステータス」オプションの横にある「スケジュール済み」ボックスにチェックを入れます。

その後、投稿の公開時間形式を選択し、「カレンダーで作成されたアイテムのデフォルトの公開時間」オプションの横にあるフィールドをクリックする必要があります。
これにより、スケジュールされた投稿が毎日公開される正確な時刻、時間、分を選択できるプロンプトが開きます。アイデアについては、ブログを公開するのに最適な時間に関するチュートリアルを参照してください。
次に、「変更を保存」ボタンをクリックして設定を保存します。

ブロックエディターに移動し、「投稿ステータス」ドロップダウンメニューから「スケジュール済み」オプションを選択できるようになりました。
詳細については、WordPressブログ投稿を自動スケジュールする方法に関するチュートリアルを参照してください。

このチュートリアルが、WordPressでwp-cronを無効にし、適切なcronジョブを設定する方法を学ぶのに役立ったことを願っています。また、FTPを使用してWordPressに管理者ユーザーを追加する方法に関するチュートリアルや、cronジョブを表示および制御する方法に関する初心者向けガイドも参照することをお勧めします。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。

イジー・ヴァネック
具体的な手順をありがとうございます。方法1を使用し、wp-configでCRONを無効にしました。自分でサーバーを所有しているので、スケジュール済みタスクにサーバーのCRONを使用することを妨げるものは何もありませんでした。以前、どのURLをCRONに使用すればよいか確信が持てなかっただけです。したがって、CRONに入力できる具体的なコマンドについても感謝します。
フィル・デイリー
WooCommerceサイトで、5分ごとに別のcronジョブを実行する必要があります。
方法1に従う場合、wp_cron.phpも少なくとも5分ごと(またはそれより速く)実行するように設定する必要がありますか?それとも30分ごとで大丈夫ですか?
WPBeginnerサポート
私たちの記事の方法は、サイト上のすべてのcronジョブに影響します。特定のcronジョブをもっと頻繁に実行する必要がある場合は、cronジョブが必要なもののサポートに確認することをお勧めします。彼らが設定を支援してくれます!
管理者
kzain
これは素晴らしい投稿です!ウェブサイトの速度を向上させるために、wp-cronを無効にして外部のcronジョブを使用することは、以前から検討していました。wp-cronを無効にし、外部ジョブを設定するための明確な手順は素晴らしいです。共有していただきありがとうございます!
ポーラ・クームス
Hello,

I’d just like to say thank you so much for this straightforward help.
I used Method 1.
I’ve carried out your instructions after reading everything at least 3 times and, for the first time ever, my WP health state has no problems!!
Thanks again.
WPBeginnerサポート
You’re welcome, glad our guide was helpful!
管理者
ベス・アレクサンダー
コントロールパネルから実行されている新しいコーンジョブが機能していることを確認する方法はありますか?
WPBeginnerサポート
cronジョブを確認するには、以下の記事を参照することをお勧めします!
https://www.wpbeginner.com/plugins/how-to-view-and-control-wordpress-cron-jobs/
管理者
アニタ・リチャーズ
混乱しています。
Woocommerce は、コマンドを「?doing_wp_cron」部分なしで設定することを推奨しています。
違いは何ですか?
WPBeginnerサポート
特に指示がない限り、?doing_wp_cronは、それがないと実行できない一部のバックグラウンド処理を可能にします。
管理者
アニタ・リチャーズ
はい、それはある程度理にかなっています。WPとWooのプロセスが実行されることの違いによるものだと思いますか?
cPanelで2つのcronジョブを作成しました。1つはあり、もう1つはなしです。それは問題を引き起こしますか?
WPBeginnerサポート
同じ結果を達成するには、少し異なる方法が必要です。
複数のcronジョブがホスティングサイトにどのように影響するかは、サイトのサイズによって異なります。サイトが大きくなるにつれて問題になる可能性があります。