最近、読者の一人から、ダッシュボードでWordPressのcronジョブシステムを表示および制御できるかどうかという質問がありました。私たちの経験上、これは多くのWordPressユーザーが抱える質問であり、特にWordPressが舞台裏でどのように機能するかについてより詳しく知るようになると、この質問はさらに増えます。
ご存知ないかもしれませんが、Cronはウェブサーバーでスケジュールされたタスクを実行するためのテクノロジーです。WordPressには独自の組み込みcronがあり、アップデートの確認、スケジュールされた投稿の公開などのスケジュールされたタスクを実行できます。
この記事では、WordPressのcronジョブを表示および制御する方法を説明します。

WordPress Cronとは何ですか?どのように機能しますか?
Cron は、スケジュールされた時間または定期的な間隔で実行されるコマンドに使用される技術用語です。ほとんどのウェブサーバーは、サーバーの保守やスケジュールされたタスクの実行に使用しています。
WordPressには独自のcronシステムが組み込まれており、これによりスケジュールされたタスクを実行できます。たとえば、アップデートのチェック、ゴミ箱からの古いコメントの削除、スケジュールされた投稿の公開などです。
WordPressプラグインは、あなたが指定したタスクを実行するためにも使用できます。例えば、あなたのWordPressバックアッププラグインは、WordPress cronを使用して、指定されたスケジュールで自動的にバックアップを作成できます。
ただし、プラグインによる WordPress cron の無責任な使用は、ウェブサイトの速度を低下させる可能性があります。特に、共有ホスティングを使用している場合は顕著です。
プラグインが頻繁にリソースを大量に消費するタスクを実行する場合、その問題を特定して修正する必要があります。
コードを書かずにWordPressのcronシステムを表示および制御する方法を見てみましょう。
WordPressのcronシステムを表示・制御する
まず、WP Crontrolプラグインをインストールして有効にする必要があります。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。
有効化したら、cron設定を制御するためにツール » Cronイベントページにアクセスする必要があります。

WordPressのcronシステムを使用して、サイトで実行されるようにスケジュールされているすべてのcronイベントのリストが表示されます。
最初の列には、cronを実行するフックの名前が表示されます。
フック名は通常、この特定のイベントが何をするかを示唆しています。
ほとんどのデフォルトのWordPressフックは、wp_update_plugins、wp_update_themesなどと同様に、wp_というプレフィックスで始まります。
WordPressプラグインは、独自のフックプレフィックスを使用する場合としない場合があります。たとえば、All in One SEOはaioseo_ prefixを使用します。
次回のcronの実行日時と、次の実行までの間隔も確認できます。
リストの最後の列では、cronイベントの編集、削除、実行が可能です。
重要:cronイベントの操作には細心の注意を払い、WordPressのデフォルトのcronイベントを削除しないでください。
さて、WordPressプラグインによって作成された、かなりのリソースを消費するcronイベントが表示されていると仮定しましょう。
まず、プラグインの設定を確認して、そこから制御するオプションがあるかどうかを確認してください。ない場合は、cronイベントの横にある「編集」リンクをクリックして変更できます。

編集ボタンをクリックすると、下の「Cronイベントの変更」タブが開きます。
ここで、イベントを実行したい頻度を変更できます。

設定を保存するには、「Cronイベントの変更」ボタンをクリックしてください。
WordPress で独自の Cron イベントを追加する
WP Crontrolプラグインを使用すると、WordPressに独自のcronジョブを追加するのが簡単になります。単にツール » Cronイベント ページにアクセスし、「Cronイベントの追加」タブまでスクロールダウンしてください。

まず、cronイベントのフック名を提供する必要があります。フック名にはスペースや特殊文字を含めることはできません。
実行したい関数に引数が必要な場合は、それらの引数を提供できます。
次に、WordPressに次にcronを実行するタイミングを伝える必要があります。「now」(すぐにトリガー)、「tomorrow」、「+2 days」、または「25-02-2020 12:34:00」を入力できます。
最後に、スケジュールを選択する必要があります。1時間ごと、1日2回、毎日、週に1回を選択できます。繰り返しなしのイベントにすることもできます。
完了したら、「Cronイベントを追加」ボタンをクリックして変更を保存します。
cronイベントがイベントリストに表示されるようになります。
ただし、現在、このイベントがトリガーされたときにWordPressに何をすべきかを指示していないため、何も実行されません。
フックと、cronフックがトリガーされたときに実行される関数を追加する必要があります。
add_action( 'wpb_custom_cron', 'wpb_custom_cron_func' );
function wpb_custom_cron_func() {
wp_mail( 'you@example.com', 'Automatic email', 'Automatic scheduled email from WordPress to test cron');
}
ご自身のメールアドレスを使用することを忘れないでください。
この機能は、cronが実行されたときにテストメールを送信するだけです。これでページを上にスクロールし、cronイベントの隣にある「今すぐ実行」リンクをクリックしてテストできます。
注意:cronの使用には、中級レベルのプログラミングおよびWordPress開発スキルが必要です。これらのスキルがない場合は、WordPress開発者の雇用をお勧めします。
これで全てです。この記事がWordPressのcronジョブの表示と制御方法を学ぶのに役立ったことを願っています。また、WordPressでよく使うプラグインを一括インストールする方法に関するガイドや、最高のWordPressセキュリティプラグインの専門家による選び方もご覧ください。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。


Mrteesurez
このトピックを紹介していただき、WordPressのCronジョブについてより深く理解するのに役立てていただき、誠にありがとうございます。詳細な説明は、それらがどのように機能し、効果的に管理する方法を明確にしてくれました。共有していただいた洞察に感謝します。この知識があれば、サイトをスムーズに稼働させ続けることができます。貴重な記事をありがとうございました!
Paul Barrett
wp-cronがサーバーを過負荷にするため、サーバーレベルでcronを実行しています。当社のサイトには、ジョブを頻繁に実行する必要があるほど時間的制約のあるものはありません。たとえば、頻度を毎日設定した場合、WordPressに問題が発生しますか?
WPBeginnerサポート
サイトで何が行われ、いつ行われるかによって大きく異なります。その程度まで遅延させることができるものについては、具体的な推奨事項はありません。
管理者
Matt K
フックの繰り返しを変更しようとすると、元に戻ってしまいます。何か間違っていますか?wp-config.phpでWP cronを無効にする必要がありますか?
WPBeginnerサポート
特定のcronジョブによります。プラグインのサポートに連絡すれば、支援してもらえるはずです。
管理者
Heinz
クロンジョブを設定した後、WP Control プラグインを無効化または削除できますか?そうすれば、多くのプラグインが実行されてウェブサイトが遅くなるのを防ぐことができますか?
WPBeginnerサポート
はい、デフォルトのスケジュール(毎日など)のいずれかを使用している限りです。カスタムスケジュールを追加した場合、それを使用するイベントはもう一度実行されますが、それ以降は繰り返されません。
そのプラグインがサイトの遅延を引き起こすことはありません。WordPressプラグインがサイトにどのように影響するかをよりよく理解するために、こちらの記事をご覧ください。
https://www.wpbeginner.com/opinion/how-many-wordpress-plugins-should-you-install-on-your-site/
管理者
Andre Hesdahl
WordPress初心者で、コードをどこに(またはどのように実行すれば)良いかわかりません。
add_action( ‘wpb_custom_cron’, ‘wpb_custom_cron_func’ );
function wpb_custom_cron_func() { wp_mail( ‘you@example.com’, ‘自動メール’, ‘WordPressからの自動スケジュールメール(cronテスト用)’); }
Jeff
記事をありがとうございます。多くのプラグインが頻繁にcronジョブを実行しているのを見るのは興味深いです。プラグインの内部を覗く素晴らしい機会でした…
デビッド
cronを30分ごとに実行するように設定するにはどうすればよいですか?
hazel beaver
Cronスケジュールを確認すると、「次回の実行」列に表示される日付がすべて過去になっています。これは、実行されていないことを意味しますか?
過去に、自動的なWordPressアップデートがサイトを壊すのを防ぐために、wp-configファイルに「true」を追加したと思います…これが原因でしょうか?
ジャンソン
これはマルチサイトで機能しますか?マルチサイトシナリオで、すべてのインスタンスの cron を制御できますか?
Oleg
素晴らしい記事ですが、必要ありません
if ( ! wp_next_scheduled( ‘wpb_custom_cron’ ) ) { wp_schedule_event( time(), ‘hourly’, ‘my_task_hook’ ); }
この部分はプラグインで処理されます。
beny salim
5分、10分のような繰り返しを追加するにはどうすればよいですか
Ahmad Sayeed
ご提示いただいた例をテストしました。スーパーマンのように機能します。しかし、パラメータを送信する例を教えていただけますか?イベント作成時に関数を追加しました。しかし、PHP関数でそれらをどのように使用すればよいかわかりません。
例を教えてください
サニー
私のウェブサイトのURLの後に長いwp cron文字列が表示され、削除できません。何か考えはありますか?
?doing_wp_cron=1499261576.8675799369812011718750 がURLの後に表示され、非常にスパムのように見えます。ご意見をお聞かせください。
Aniket Ashtikar
その「my_task_hook」のcronフックは、2行目で正しく記述されていますか、それとも「wpb_custom_cron」に変更すべきでしょうか?
Matt
wp-adminエリアでリンクにアクセスすることは可能かご存知ですか?WordPressサイトに管理機能を追加するプラグインがありますが、これが24時間ごとに実行されるようにスケジュールしたいのです。リンクはありますが、明らかにログインしている必要があります。
Pam M
サンプルコードに示されている最初のif文は必要ですか?WP Crontrolプラグインのスケジュールとスケジュールの解除機能を上書きしてしまうように見えます。
プラグインでジョブをスケジュールし、「今すぐ実行」オプションでテストしたところ、あなたの例はうまく機能しました。スケジュールされた時間にメールが届くかも確認します。
役立つ背景情報、ありがとうございました。
Nigam
Hi
WordPress管理画面のWP-Cron Eventsのページをリフレッシュしたときにのみ、イベントが実行されます。