WebサクセスがなくてもWP-Cron(疑似cron)を毎分実行できるWordpressプラグイン「WP Cron minutely」
WordPressサイトへのアクセスをトリガーとして実行されるWP-Cron。
・アクセスがないと時間どおりに動かない
・逆にアクセスが多いサイトだとサーバー負荷が高まる
という弱点がありました。
サーバーのcronを使えばどちらも解消できるのですが、cron設定って少し敷居が高いですよね?
そこで、「WP-Cron」を毎分実行するWordpressプラグインを作成しました。
インストール・有効化して、設定を「ON」にするだけで動きます。
「WP Cron minutely」プラグインの購入はこちら(PayPal)
目次
WP-Cronの弱点
(1)サイトへのアクセスが少ないといつ起動されるか分からない。
WP-Cronはサイトへのアクセスがトリガーとなって実行されます。
なので、アクセスが少ないサイト、ベーシック認証などのクローズドなサイト、の場合、いつWP-Cronが実行されるか読めない、という状態になります。
予約投稿の公開時間がずれるかもしれませんし、データバックアップのスケジュールがずれることにもなります。
(2)アクセスの多いサイトだとサーバー負荷が高まる
サイトアクセスをトリガーにする、ということは、アクセスがあるたびに「WP-Cron」に関する処理が動く、ということになります。
これはまぁまぁサーバーに負荷がかかります。
他のブログでも紹介されていますが、WP-Cronを無効にするとサーバー負荷がそれなりにさがるようです。
(私自身はパフォーマンスチェックはしておりません。。)
WP-Cronを定期的に実行する方法(サーバーCron)
では、正確にWordpressをWP-Cronを実行するにはどうしたらよいかと言いますと、
・サーバーのcronを使って、定期的にWP-Cronを起動する
ということになります。
サーバーのcronにどのような設定をするかというと、
/usr/bin/php /PATH/TO/WORDPRESS/wp-cron.php > /dev/null 2>&1
/usr/bin/curl https://hogehoge.com/wp-cron.php > /dev/null 2>&1
といったコマンドを、レンタルサーバーのcron設定に追加したり、サーバー管理者の場合はcrontabに登録したりします。
WP-Cronを無効にしてサーバー負荷を下げる方法(wp-config.php)
WP-Cronを無効化するのは、wp-config.phpファイルに以下の記述をするだけです。
define('DISABLE_WP_CRON', 'true');
「WP Cron minutely」の特徴
サーバーcronをいじらずともWP-Cronを定期実行したいな、と思いプラグイン作成しました。
プラグインをインストールして、設定ページで「ON」して「変更を保存」するだけで、WP-Cronが毎分実行されるようになります。
サーバーのcron(crontab)は使いません。
サーバーまわりを知らなくても、いじらなくても大丈夫です。
wp-config.phpで「DISABLE_WP_CRON」を「true」にしても動きます。
アクセス多いサイトの負荷軽減としても使えます。
もちろん「DISABLE_WP_CRON」が「false」でも動きます。
※「WP Cron minutely」プラグインに、「DISABLE_WP_CRON」を「true」にする機能をついていません。WP-Cronを無効化したい(サーバー負荷を軽減したい)場合、別途、wp-config.phpに設定追加する必要があります。
「WP Cron minutely」の処理的な話
プラグインの中身で何をやっているか、というお話です。
簡単にいうと、
wp_schedule_single_eventでwp-cronを実行するイベントをスケジュール登録し、wp-cronを実行する、
という処理です。
60秒sleepしてwp-cronを実行する関数を呼びつづける、という感じです。
wp-cronを実行する箇所は、wp-cronを無効化する場合を想定して、spawn_cron()やwp_cron()は使用せずに、exec関数でwp-cron.phpを実行するようにしています。
ちなみに、Xserverの場合/usr/bin/phpのバージョンが5.4のため、php5.6以上が必要となるWordPress5.2のサイトだと「/usr/bin/php wp-cron.php」は動きません。ので「/usr/bin/php7.x」と指定する必要があります。
こういったことをごにょごにょ考えなくとも使えるようにと作ったのが「WP Cron minutely」です。
「WP Cron minutely」の使い方
プラグインをインストールして有効化すると「設定」メニューに「WP Cron minutely」というメニューが表示されます。
「ON」をチェックして「変更を保存」するだけです。
「WP Cron minutely」が動いているか確認する方法
「WP Control」というプラグインで、wp-cronに登録されているスケジュールが一覧で確認できます。
「WP Control」をインストール、有効化すると「ツール」メニューに「Cronイベント」メニューが表示されます。
そのページには、その時点でスケジューリングされているcronイベントが一覧表示されます。
「WP Cron minutely」が正常に稼働していると「pngn_tls_wp_cron_minutely_background_event」というフック名のイベントが表示されています。
「WP Cron minutely」の動作環境
php7以上のサーバーが必要です。
レンタルサーバーでは、mixhost、Xserverで動作確認済みです。
DISABLE_WP_CRONがtrueでも動きます。
商品説明
商品名:「WP Cron minutely」プラグイン
金 額:5478円(税込)
動作環境:Wordpressプラグインです。php7以上。
支払方法:PayPal
購入方法
以下のリンクから支払いページにお進みください。
「WP Cron minutely」プラグインの購入はこちら(PayPal)
お願い
商品の性質上、一度購入いただいたら返金はできませんのでご承知おきください。
プラグインの二次配布はお控えください。
購入の流れ
(1)PayPal支払い完了後、Paypal支払完了ページにある「サイトへ戻る」リンクをクリックすると「WP Cron minutely」ダウンロードページのリンクとパスワードが表示されます。
(2)パスワードはコピペして保存しておいてください。
(3)リンクをクリックしてダウンロードページに移動し、パスワードを入力します。
(4)ダウンロードページには、プラグインダウンロードリンクがあります。
(5)プラグインファイルをダウンロード保存してください。
よくあるご質問
【Q】プラグインに関する質問があります。
【A】お問い合わせページからご連絡ください。
お問い合せページはこちらをクリックしてください。
【Q】パスワードを忘れてしまったのですが。
【A】お問い合わせページからご連絡ください。
その際、以下の内容をご記入ください。
・PayPalのメールアドレス
・取引ID
・購入日時
・商品番号
「取引ID」「購入日時」「商品番号」は、お支払い完了時にPayPalから自動で返信されるメールに記載されています。
いただいた内容を確認の上、メールにてご連絡いたします。
【Q】ダウンロードページURLが分からなくなったのですが?
【A】こちらにございます。
【Q】複数のサイトで使いたいのですが?
【A】はい、お使いいただけます。
【Q】このプラグインのカスタマイズをしたいのですが?
【A】はい、ご自由に改変ください。カスタマイズ後のプラグインの二次配布はお控えください。
【Q】このプラグインのカスタマイズしてほしいのですが?
【A】お問い合わせページからご連絡ください。
お問い合せページはこちらをクリックしてください。
【Q】PayPal以外の支払い方法はありませんか?
【A】今のところ、PayPalのみです。
更新履歴
ver1.0.1 2019年9月20日 軽微な不具合を修正
ver1.0.0 2019年9月5日 プラグイン公開
コメント
こんにちは。
「WP Cron minutely」プラグインの購入を検討しています。
最新の更新履歴が2019年9月20日ですが、
Wordpressの最新バージョン5.5.1でも
問題なく動きますでしょうか?
ご回答をお願いいたします。
まなぶさん
コメントありがとうございます。
はい、私が利用している環境(Xserver、WordPress5.5.1)では、今のところ問題なく動いています。
よろしくお願いいたします。