
ウェブサイト制作で大体問題になるのが自動配信メールです。メールが迷惑メールに入ったり、メールの文言が事象にあっていない文言だったり、メールが仕様変更で配信されなかったりするので、その都度対策が必要です。
さて今回はワードプレスのブッキングパッケージでリマインドメールが届かない事象が発生したので原因と対策をしていきます。
リマインドメールが機能しないとクライアントと僕自身の作業負荷が多くなり、何よりも予約システムを使用したお客様にストレスを与えてしまうので、システムを導入した意味がなくなります。
早急に対策したいところです。
Booking Package予約リマインダーについて
リマインドメールは、予約を行った顧客へ予約日の1日前に予約内容を再送信する機能です。この機能を使うことで予約の無断キャンセルの防止が期待できます。 Booking Packageは予約のリマインドメール送信イベントの発生にWordPressのwp_schedule_event()関数を採用しており、その関数に対して1時間おきにイベントが実行されるように指定しています。
リマインドメールが送信されない3つの原因
設定が正しく行われている場合、リマインダーメールが送信されない原因は下記のことが考えられます。
- wp_schedule_event関数で登録されたイベントがWordPressコアファイルによって実行されなかった。
- WordPressコアファイルの実行時にすでに対象の顧客の予約時間が送信される基準の時刻より過去の時間となっている。
- その顧客のステータスが「承認済み」以外。
wp_schedule_event関数で登録されたイベントがWordPressコアファイルによって実行されなかった
WordPressには擬似的にcron処理を行える「wp_schedule_event」という関数が用意されています。
指定された一定の期間をおいてWordPressのコアファイルによって実行されるアクションを登録します。アクションは誰かがサイトを訪れたときに、予定されていた時間をすぎていた場合、実行されます。フックのリストはプラグイン APIをご覧下さい。関数リファレンス/wp schedule event
WordPressを導入しているホームページに訪れる訪問者が少ない場合、WordPressのイベントが1時間おきに実行されない可能性があります。その場合はサーバーのcrontab(cronジョブ)でwp-cron.phpの実行を検討してください。
crontabにcurlでイベントの実行例
curl https://YOUR_DOMAIN/wp-cron.php
リマインドメールが届かない原因
今回、リマインドメールが届かない有力な原因は訪問者が少ないために「wp_schedule_event」が実行されなかったのではないかと考えています。対策として「cron」を導入しようと思います。
今回はお名前.comのサーバーを使用しているので「cron」について調べてみます。
お名前.comは「cron」と「コマンドスケジューラ」が使えない
結論から先にいうと、お名前.comでは「cron」と「コマンドスケジューラ」が使えません。1000円ぐらいのプランだから使えるようにしておいてよと思ったけど使えないものは使えない。なので別の方法を感がます。
なんで結論から言ったかというと、お名前.comの過去記事でCRONが使えたり、コマンドスケジューラーが使えた時があったので、今も使えるのかと勘違いして色々試してみました。だけど全然できなくて、最終的にカスタマーに聞いたら「使えない」ということでした。勘違いする過去記事は消してほしいですね。
プラグイン導入でCronを動作させる
なんかいいプラグインがあるなと思ったけど、結論から先にいうとこれも問題解決にはなりません。
「WP Crontrol」というプラグインを導入しました。すべてのイベントで確認すると「booking_package_notification」というフックが登録してあります。

これだけやってもリマインドメールが届かない
上記のプラグイン入れてもただ監視するだけのプラグインでwp_schedule_event関数を実行するプラグインではなかった。
ロリポップのCRON機能を利用で解決
最終的に自分が使っているロリポップのCRON機能を使って、クライアントのサイトに一時間に一回アクセスする方法でリマインドメールが届かない問題を解決しました。
そもそも、お名前.comでCRONが使えればすぐ解決する話だったのですが、お名前.comがCRON機能がない為に対策に時間がかかりました。次回からクライアントがサーバーをお名前.comにすると言っても絶対にお勧めしない。
だけどお名前.comのドメイン取得機能は便利です。

LEAVE A REPLY