WordPressのwp-cronを無効化して本物のCrontabを使う方法

スポンサーリンク
スポンサーリンク

wp-cronを無効にして、あなた自身の本物のcronジョブに置き換えたいですか?

wp-cronを独自のcronジョブで置き換えると、サイトのスケジュールタスクをより確実に実行でき、またトラフィックの多いサイトではサーバーの負荷を軽減することができます。

この記事では、wp-cronとは何か、そしてこの戦術に馴染みがない場合、なぜ無効にした方が良いのかを説明します。そして、wp-cronを無効にし、本物のcronジョブに置き換える方法をステップバイステップで紹介します。

wp-cronが何であるか、そしてなぜそれを無効にしたいかを既に知っている場合、ここをクリックしてチュートリアルに直接ジャンプすることができます。

スポンサーリンク

wp-cronとは?

Wp-cronは、WordPressサイトの時間的制約のあるタスクを制御する役割を担うファイル/機能です。

例えば、次の水曜日の午前9時30分に記事を公開するようにスケジュールしたとします。Wp-cronは、この作業を時間通りに(あるいは可能な限り「時間通り」に近い形で)実行するようにします。

WordPressのコア機能が機能するようにすることに加えて、多くのWordPressプラグインは、スケジュールに敏感な部分を処理するためにwp-cronに依存しています。

もし、あなたのサイトのすべてのスケジュールされたタスクを表示したい場合は、WP-Crontrolのような無料のプラグインを使用することができます。ツール → Cron Eventsで、WordPressが実行するようにスケジュールされた自動タスクと、その実行頻度を確認できます。

The WP-Crontol plugin lets you see tasks before you disable wp-cron

名前が示すように、wp-cronはUnixオペレーティングシステムで使用されているより一般的なcronスケジューリングシステムから来ています。しかし、wp-cronはこれらのスケジューリングシステムとは別物であり、wp-cronは本物のcronジョブではありません。

大きな違いは、wp-cronはあなたや他の人があなたのウェブサイト(フロントエンドまたはダッシュボード)を訪問したときのみ実行されることです。誰かがあなたのサイトにアクセスするたびに、WordPressはwp-cron.phpファイルを実行し、スケジュールされたタスクがあるかどうかをチェックします。タスクがある場合は、それを実行します。

しかし、トラフィックが少ないサイトでは、wp-cronは訪問があったときのみ実行されるため、問題が発生する可能性があります。例えば、水曜日の午前9時30分に投稿するようにスケジュールしたとします。しかし、その時間帯にあなたのサイトには訪問がありません。実際、あなたのサイトには午前11時30分まで次の訪問がありません。

なぜwp-cronを無効にする必要があるのでしょうか?

wp-cronを無効にし、あなた専用のcronジョブに置き換える理由は2つあります。

  1. 信頼性 – 上記の例で説明したように、wp-cronは実行するためにウェブサイトの訪問を必要とするので、低トラフィックのサイトでは必ずしも信頼できるものではありません。本物のクーロンジョブを使えば、たとえ訪問がなくても、何があってもX分ごとにタスクを実行するように設定することができます。
    1. パフォーマンス – トラフィックの多いサイトでは、WordPressがほぼすべての訪問時にwp-cron.phpファイルを実行するため、一部の人々はwp-cronを好まないようです。WordPressは60秒に1回以上実行しないことでこれを制限しようとしますが、同時訪問の両方がwp-cronをトリガーするなど、さまざまな技術的理由によってパフォーマンスが低下する可能性があります。

一言で言えば、wp-cronを無効にする方法を学ぶことは、異なる理由ではありますが、低トラフィックと高トラフィックの両方のサイトに便利です。

wp-cronを無効にする方法 (そして本当のcronジョブを設定する)

さて、「何を」と「なぜ」がわかったところで、「どのように」に取り掛かりましょう。wp-cronを無効化し、独自のサーバーcronジョブ(または他のソリューション)に置き換える方法を紹介します。

このプロセスには2つの部分があります。

    1. 内蔵のwp-cron機能を無効にして、WordPressがすべての訪問時にwp-cron.phpを実行しないようにする必要があります。これを行うには、サイトのwp-config.phpファイルに1行のコードを追加するだけです。
    1. あなたが設定したスケジュールでwp-cron.phpを呼び出すために、独自のcronジョブを設定する必要があります。これを使えば、サイトにアクセスがあってもなくても、特定のスケジュールでwp-cron.phpを実行することができます。

WordPressのwp-cronを無効化する。

wp-cronを無効にするには、サイトのwp-config.phpファイルに1行のコードを追加する必要があります。このファイルは重要な設定ファイルなので、変更する前にサイトをバックアップすることを強くお勧めします(または、少なくともオリジナルの wp-config.php ファイルのコピーを作成し、何か問題が発生したときに作業コピーを再アップロードできるようにします)。

wp-config.phpファイルにアクセスするには、以下のいずれかの方法があります。

  • FTPでサーバに接続し、ルート・ディレクトリ(wp-adminとwp-contentフォルダを含む同じディレクトリ)にあるファイルを見つけます。
  • cPanel File Managerのようなものを使って、Webブラウザからサーバーのファイルをブラウズする。

あなたのサイトおよび/または元のwp-config.phpファイルのバックアップを取得したら、/*それはすべてです、編集を停止する!"という行の上に次のコードスニペットを追加してください。ハッピーパブリッシング。*/

define('DISABLE_WP_CRON', true);

というように。

How to disable wp-cron in WordPress

変更を保存し、必要ならファイルを再アップロードします。

一旦これを行うと、人々があなたのウェブサイトにアクセスしたときに、WordPressはwp-cron.phpファイルを呼び出さなくなります。

独自のcronジョブを設定する

wp-cronを無効にした場合、サイトの自動タスクがまだ実行されるように、独自のcronジョブをセットアップする必要があります。

これを行うには、2つの方法があります。

    1. ホスティングを使用して、サーバーレベルで独自のクーロンジョブを作成することができます。正確な手順は、ホスティングプロバイダーによって異なります。
    1. オンラインのクーロンサービスを利用する。これはクラウドベースのツールで、サービスのサーバーを使用してクーロン・ジョブを実行することができます。一般的に、これらのサービスは無料プランが限られているため、有料となる場合があります。ありがたいことに、有料のサービスでもかなりお手頃な価格です(例えば、年間12ドルなど)。

両方の設定方法を紹介します – ただし、どちらか一方の方法だけでよいです。

サーバーのcronジョブをホスティング経由でセットアップします。

サーバーのcronジョブを設定する手順は、お使いのホストによって異なります。非常に簡単にできるものもあれば、そうでないものもあります。

この例では、最も一般的なソリューションであるcPanelを使用しますが、あなたのホストがcPanelを使用していない場合、またはこの機能がどこにあるかわからない場合(またはあなたのホストがそれを許可しているかどうか)、ホストのサポートドキュメントを参照することをお勧めします。

始めるには、ホスティングダッシュボードにログインし、cPanelに移動します。cPanelのインターフェイスで、Cron Jobs (または似たようなもの)と呼ばれるツールを見つけることができるはずです。通常、それは高度なカテゴリの下にありますが、それはあなたのホストに応じて異なる場合があります。

そのツールを選択してください。

The cPanel cron tool

次のページで、Add New Cron Job セクションを見つけます。タイミングを指定するオプションとコマンドが表示されるはずです。

タイミングはあなた次第ですが、特に共有ホスティングでは、通常30分ごとに実行するのがよい出発点です。実際、共有ホストの中には、それ以上の頻度で実行することを許可しないものもあります。

共通設定のドロップダウンからTwice Per Hourを選択すると、残りのタイミング設定があらかじめ設定されます。あるいは、Crontab.guruを使って自分で構文を生成することもできます。対応するボックスに詳細を入力するだけです。

次に、以下のコードをCommandボックスに追加します。

wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 とします。

https://yoursite.com` は、必ずあなたのウェブサイトの実際のURLに置き換えてください。

例えば、あなたのウェブサイトがhttps://basketballfanatic.comであれば、適切なコマンドは次のようになります。

wget -q -O - https://basketballfanatic.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 となります。

Creating a new cron job in cPanel

Add New Cron Jobボタンをクリックして、Cronジョブを保存することを確認してください。その後、以下の現在のCronジョブリストに表示されるはずです。

オンラインクロンサービスを利用する

もしあなたのホストがcronジョブをセットアップすることを許さないなら、またはあなたがよりシンプルな経験を好むなら、代わりに専用のcronサービスを使用することをお勧めします。

以下のような、いくつかの人気のあるオプションがあります。

  • EasyCron
  • cron-job.org
  • SetCronJob

このチュートリアルでは、EasyCronを使用することにします。

EasyCronは、最大20分の間隔で毎日200までのクーロンコールを無料で利用できます(毎日20分ごとに1つのタスクを実行できます)。これは、単一のWordPressサイトには十分なはずです。有料プランも年間わずか12ドルからと、かなりお手頃です。

まず、無料アカウントに登録します。

そして、EasyCronのインターフェイスで+ Cron Jobボタンをクリックしてください。

Create a new cron job after you disable wp-cron

その後、あなたのcronジョブを設定することができるポップアップが表示されます。

URL to callフィールドに、https://yoursite.com/wp-cron.php?doing_wp_cronを入力します。https://yoursite.comは実際のウェブサイトのURLに置き換えてください。

次に、「いつ実行するか」で、「30分ごと」を選択します(必要に応じてもっと頻繁に選択することもできますが、ほとんどのウェブサイトでは30分が適切な開始点です)。

それから、Cronジョブの作成をクリックして、設定を保存し、Cronジョブを実行します。

How to add a cron job with EasyCron

完了です。

より信頼性の高いタスクスケジューリングのために、今日からwp-cronを無効にします。

Wp-cronは、WordPressに組み込まれたスケジューリングシステムで、ブログの投稿予定など、サイトのさまざまなタスクが時間通りに実行されるようにするものです。

しかし、この内蔵機能は、信頼性(低トラフィックサイト向け)とパフォーマンス(高トラフィックサイト向け)に関して、いくつかの欠点があります。これらの理由から、wp-cronを無効にして、この記事で紹介したような真のcronジョブに置き換えることをお勧めします。

サイトのパフォーマンスを向上させる他の方法については、WordPressのパフォーマンスを向上させるための完全なガイドをご覧ください。

wp-cronを無効にして、本物のcronジョブに置き換える方法について、まだ質問がありますか?コメントで教えてください。

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