
こんにちは、管理人のけーちゃんです。
WordPressには定期的な作業を自動化するwp-cronという機能があります。またWordPressが動作しているサーバーにはCronという似た機能があります。
ここでは、この二つの機能とは何かという点と、wp-cronの問題点を解決するためにCronを利用する方法をお伝えします。
\目次も見てね!/
Cronとwp-cron
Cronとwp-cronは異なる機能です。どのような点が異なるのかを、解説します。
Cronとは
Cronとは、特定の日時や時刻に実行するスクリプトやコマンドを管理する、サーバーの機能です。例えば、不必要な一時ファイルが存在するかを決まった時刻に確認して、存在するなら削除するような処理をCronに登録して自動化できます。
Cronに重い処理を登録すると、サーバー全体に大きな負荷を与える可能性があります。そのためcronの設定をユーザーに開放していないレンタルサーバーも多く存在します。
mixhostはCronを使用できます。ただし負荷が大きい場合は、mixhost側の判断にて制限させる可能性があります。

ちなみにCronの先頭が大文字になっているのは、mixhostでの表示が大文字になっているからです。たぶん、どちらでもよさそう…
wp-cronとは
wp-cronは、WordPressに組み込まれている機能です。cronと同様に決められた時刻に、決められた処理を実行します。例えば、テーマやプラグインのアップデータ確認をwp-cronで行っています。
wp-cronは、管理パネルやWebページが表示される度に時刻を確認して、決められた時刻を経過していたら、決められた処理を実行します。そのため、次のような問題があります。
- 全くアクセスされないサイトは、wp-cronによる処理が行われない可能性がある
- アクセス数が非常に多いサイトは、wp-cronの時刻確認処理で重くなる可能性がある
時刻確認処理の負荷は非常に小さいですが、回数が増えることで大きな負荷になる可能性があります。そこで、wp-cronを無効化して、サーバーのcron機能でWordPressの定期処理を行うことような設定ができます。

ここでは、wp-cronからCronへの切り替え方法をお伝えします。
参考:mixhostの機能を最大限に活かすことができる、LiteSpeed Cacheプラグインの画像最適化機能もwp-cronで動作しています。こちらも、wp-cronからCronへの切り替えの影響を受けます。
cronジョブの設定方法
cronで実行される一つ一つの処理をcronジョブと呼びます。cronジョブの設定と確認を行う画面は、mixhostのcPanelから呼び出します。
なおcronジョブとして実行するコマンドやスクリプトについては、Linuxについての知識が必要です。ここでは触れません。
Cronジョブ画面の表示
次の手順で、Cronジョブ画面を表示します。
- mixhostのcPanelにログインする
- 上級タブの「Cronジョブ」をクリックする

- Cronジョブ画面が表示される
上級タブはcPanelの最後の方にあります。思いっきり下方にスクロールしましょう。
Cronジョブの追加
Cronジョブ画面を少し下方にスクロールすると、Cronジョブを新規追加する入力欄が表示されます。

「分」「時間」「日」「月」「平日」に、ジョブを実行する日時と時刻を入力します。基本的には「一般的な設定」で希望するパターンに近いものを選択して、内容を変更してください。
| 内容 | 表記 | 例 | |||||
|---|---|---|---|---|---|---|---|
| 分 | 時 | 日 | 月 | 平日 | 実行時間 | ||
| 複数指定 | カンマで区切る | 22,44 | * | * | * | * | 毎時22分と44分 |
| * | 10,20 | * | * | * | 毎日10時0分と20時0分 | ||
| 範囲指定 | ハイフン | 20-25 | * | * | * | * | 毎時20分から25分まで1分毎 |
| * | 10-20 | * | * | * | 毎日10時から20時まで1時間毎 | ||
| 間隔指定 | */指定 | */20 | * | * | * | * | 20分毎 |
| * | */3 | * | * | * | 3時間毎 | ||
最後にコマンドを入力して、「新規cronジョブを追加」ボタンを押して登録します。
Cronジョブの確認
登録したCronジョブは、新規追加欄の下方で確認できます。

私の環境では、mixhostのcPanelが自動で登録したWordPressサイトのバックアップジョブが表示されていました。
上図では表示されていませんが右側に、編集と削除を行うリンクが設置されています。内容を変更するときは「編集」を押してください。

自分が登録したジョブのみ編集しましょう。
wp-cronの切り替え方法
WordPressの定期処理を、wp-cronからサーバーのCron機能に切り替える方法を紹介します。
mixhostの場合
mixhostでwp-cronからサーバーのCron機能に切り替えは、WordPressの管理ツールでおこなえます。管理ツールは、サーバープランにより「Softaculous」と「WP Toolkit」のどちらかが用意されていますが、どちらもワンクリックで切り替えることができます。
Softaculousでの切り替え
WordPressサイトをSoftaculousでインストールしている場合、次の手順でCronに切り替えます。
- mixhostのcPanelにログインする
- cPanel左端の「WordPress Manager by Softaculous」をクリックする

- インストール済みサイトがリスト表示されるので、目的のサイトの改変ボタンを押して開く

- 「WordPress Cron (wp-cron.php)」設定を「Disabled」に変更する

Disabledは無効という意味です。wp-cronを無効化するだけでなく、サーバーのCron機能の切り替えも行います。切り替えにより、毎時間に2回の定期処理が実行されるようになります。
WP Toolkitでの切り替え
WordPressサイトをWP Toolkitでインストールしている場合、次の手順でCronに切り替えます。
- mixhostのcPanelにログインする
- cPanel左端の「WP Toolkit」をクリックする

- インストール済みサイトがリスト表示されるので、目的のサイトの開閉ボタンを押して開く。
- 「wp-cron.phpを継承」を有効にする

「wp-cron.phpを継承」を有効にすると、wp-cronが無効化されてサーバーのCron機能にwp-cron.phpを引き継ぐための処理が登録されます。

難しく書いていますが、やっていることはCronにジョブ登録しているだけです
手作業でwp-cronを切り替える方法
手作業でwp-cronをサーバーのCronに切り替える場合は、まずはwp-cronを無効化します。
WordPressのインストールディレクトリにある、wp-config.phpファイルの内容を書き換えます。
wp-config.phpファイルを開いて、次の行を探してください。
define('DISABLE_WP_CRON', false);false を true に変更します。
define('DISABLE_WP_CRON', true);変更したら、ファイルを保存してください。これで、wp-cronが無効化されます。
次に、サーバーのCronにジョブを登録します。登録には、次の情報が必要なので確認してください。
| 情報 | 内容 |
|---|---|
| PHPのパス | パスが通っているなら不要 |
| wp-cron.phpのサーバー上のパス | Cronで実行するphpスクリプト |
次に、下記のコマンドでCronの設定ファイルを編集するエディタを起動します。
crontab -e設定する環境に合わせて、次のように行を追加します。
20,50 * * * * php /home/usename/public_html/kc-mixh.xyz/wp-cron.php >/dev/null 2>&1※そのままコピペせずに、書き換えてください。
これで、wp-cronからサーバーCronへの切り替え終了です。
まとめ
ここでは、Cronとwp-cronについてお伝えしました。
どちらも指定された時刻に指定された処理を行いますが、Cronはサーバーの機能で、wp-cronの機能です。
wp-cronはアクセス数が非常に多いWebサイトの場合、処理速度を遅くする原因になります。そのためwp-cronを無効化して、Cronで同等の処理をおこなうように設定を変更することをWordPress運営においては検討する必要があります。
mixhostはwp-cronからCronへの切り替えが簡単に行えるので、活用してください。












