cron(自動実行タイマー)

WP-Cronの無効化

WP-Cronとは

WPには、予約投稿や自動更新という自動化機能が実装されていることはご存じの通りです。

このWPに実装されている自動実行の仕組みがWP-Cronです。

各ジョブには1時間に1回とか1日1回などの実行間隔が設定されており、時間が来れば自動実行される仕組みです。

しかしその説明は正しいようで正しくありません。

WPはPHPというプログラム言語で作られていますが、PHPは無限に動き続けることができません。
無限に動くようにプログラミングしても、仕様上、一連のプログラムは実行開始から2分で打ち切られてしまいます。

なので、指定時間が来たかどうかを監視することができないのです。
※監視プログラムはずっと動き続けている必要があるから

PHPのプログラムはずっと動き続けることができないので、また動かすためのきっかけが必要です。

WPでは『アクセス』をきっかけとして、サイト表示のついでにWP-Cronを動作させています。

つまり、アクセスが無ければ、設定時間が来ても何も起こらないのです。

Agent-Hでは自動記事生成、自動投稿、自動コメントなどが実装されていますが、
まだ立ち上げたばかりのサイトではアクセスがまったく無いので、まったく投稿されません。

それでは困るので対策します。

サーバーのcronへ移行

そこで、自動投稿の発動要因をアクセスではなく、サーバーのタイマー機能に変更してしまって、この問題を解決したいと思います。

サーバーのタイマー機能は、cron(クロン、クーロン)といいます。
指定時間になったら指定したプログラムを動かすというサーバーの自動実行機能です。

WPのWP-Cronを無効にして、サーバーにcronの設定をすることで、アクセスが無くても定期的にWPの各種自動機能が実行されていくようになります。

WP-Cronの無効化

本来はWPのテーマエディタ機能などを使って、PHPファイルをゴニョニョ書き換えて改造しなければいけないのですが、初心者にはハードルが高いため Agent-H では、プラグイン実行時に WP-Cronを無効化するようプログラムしています。

つまり、ユーザーは何もしなくても大丈夫!

プラスのメリット

余談になりますが、wp-cronはアクセスがある度に何か動かさないといけないプログラムは無いか確認します。
自動実行されるプログラムは記事の投稿だけでなく、テーマやプラグインの更新チェックなども行われます。

サイト立ち上げ時のアクセスが少ない時には「見送り三振」の連発、アクセスが殺到するようになったら「空振り三振」の連発になるのです。

アクセス毎にwp-cronを実行するのではなく、cronで定期的にwp-cronを実行するようにすることで、エンドユーザーがサイトを訪れてくれた際に余計な動作がなくなり、サイトの表示がスムーズになります。

重いWPサイトがかなりの軽量化になり、結果、訪問時の離脱防止にもなります。

cron(サーバー)設定

実はWP-Cronを無効化しても、アクセスによって、WP-Cronが実行されるのを停止しているだけで、WP-Cron自体が死んでいるのではありません。

WP-Cronは、wp-cron.phpというプログラムファイルが本体ですが、こいつにアクセスすることでWP-Cronが発動します。

つまり、サーバーのcronで、wp-cron.phpを発動させればいいのです。

設定方法

2分毎に1回、wp-cron.phpを実行するように設定してください。

mixhostでの設定です。

一旦、1分間に1回に設定すると、以下の各欄に「 * 」が記入されるので楽です。

2分間に1回に変更します。

コマンドに以下を記入します(URLはあなたのWPに書き換えてください)

curl --silent "https://sub.example.com/wp-cron.php"

これで、2分に1回 wp-cron.phpへアクセスし、WP-Cronを発動してくれます。

他のサーバー会社

こちらを参考にしてください。

cronの設定
なぜこの設定が必要なのかWPの自動投稿機能は、アクセスがあった際に「ついでに行われる」ものなので、アクセスが無いサイトでは投稿されません。すでに頻繁にアクセスがあるサイトであれば良いのですが、まだ立ち上げたばかりのサイトではアクセスが少ない...

2分毎に1回、wp-cron.phpを実行するように設定してください。

コマンドは色んな書き方がありますが、上記共通マニュアルの書き方でも、当マニュアルの書き方でもお好きな方を書いてください。