WP-Cron をシステム・タスク・スケジューラーにフック

前述したように、WP-Cron は継続的に実行されませんので、時間通りに実行しなければならない重要なタスクがある場合には、問題となります。これには簡単な解決策があります。システムのタスク・スケジューラーを設定し、必要な間隔で (または必要な特定の時間に) 実行させるだけです。最も簡単な解決策は、ファイル wp-cron.php に Web リクエストを行うツールを使用することです。

システム上でタスクをスケジューリングした後、ステップがもう一つあります。WordPress は各ページのロード時に WP-Cron を実行し続けます。これはもはや必要なく、サーバーのリソースを余分に使用することになります。WP-Cron は、ファイル wp-config.php で無効にできます。ファイル wp-config.php を開いて編集し、以下の行を追加してください:

define( 'DISABLE_WP_CRON', true );

Windows

Windows では、時間ベースのスケジューリング・システムを「タスク・スケジューラー」と呼んでいます。コントロールパネルの 管理ツール からアクセスできます。

タスクをどのようにセットアップするかは、サーバーのセットアップによって異なります。一つの方法は、PowerShell と基本タスクを使用することです。基本タスクを作成した後、以下のコマンドを使って WordPress Cron スクリプトを呼び出すことができます。

powershell "Invoke-WebRequest http://YOUR_SITE_URL/wp-cron.php"

macOS と Linux

macOS も Linux も、時間ベースのスケジューリング・システムとして cron を使用しています。通常、ターミナルからコマンド crontab -e でアクセスします。コマンドを実行するシステムユーザーによって、タスクは一般ユーザーとして実行されるか、root として実行されることに注意してください。

Cron には従うべき特定の構文があり、以下のパーツから構成されています:

  • 分 (Minute)
  • 時 (Hour)
  • 日 (Day of month)
  • 月 (Month)
  • 曜日 (Day of week)
  • 実施するコマンド
Cron スケジューリング

時間セクションのいずれかに関係なくコマンドを実行する場合は、アスタリスク (*) を使用します。たとえば、時・日・月に関係なく15分ごとにコマンドを実行したい場合は、以下のようになります:

多くのサーバーには wget がインストールされていて、これは WordPress の Cron スクリプトを呼び出すための簡単なツールです。

wget --delete-after https://example.com/wp-cron.php
--delete-after オプションがない場合、wget は、HTTP GET リクエストの出力を保存します。

毎日、毎晩深夜にトリガーされる、あなたのサイトの WordPress Cron への呼び出しは、次のようになります:

0 0 * * * wget --delete-after https://example.com/wp-cron.php

原文 / 日本語訳

s
検索
c
新規投稿を作成する
r
返信
e
編集
t
ページのトップへ
j
次の投稿やコメントに移動
k
前の投稿やコメントに移動
o
コメントの表示を切替
esc
投稿やコメントの編集をキャンセル