予約した日から利用日まで時間が長い場合、あるいは当日改めて確認したい場合などに予約完了メールとは別の「通知メール」を送りたいことがあります。そのとき、この機能を利用して自動送信することで、個別にメール送信する手間を省くことができます。
予約通知機能を利用するための注意点
「wp_cron」と「crontab」をご存じの場合は読み飛ばして下さい。
さてWordPressを含むWebアプリケーションは、プログラムが実行されることで機能を果たします。ところがそのプログラムは、誰かが命令をしないといつまでも実行されません。即ち、この機能を利用するため下の説明に倣って設定しても、期待通りの動作をしない(指定時間にメールが送信されない)可能性があるのです。
それでは誰が実行のトリガーを引くのでしょうか?
それはサイトにアクセスする利用者になります。もちろん管理者がWordPressの管理画面を操作する場合も含まれます。ですのでアクセスのないサイトではこの機能が利用できないことになります。
以上の場合も含め、インターネットではメールが正常に送信、または着信しないことがありますので、予めそれを前提に機能を活用するようにお願いします。
予約通知メールを送信する時刻
WordPressでは定期的に(1時間1回、1日2回、1日1回)プログラムを実行する機能があります。その機能を利用して1時間毎に実行するようにスケジュールを設定しています。ただし前節で説明した通り、アクセスがない場合は動作しません。
通知メールは送信時刻を設定できますが、1時間毎にスケジュールされた時刻で処理するとき、送信時刻が既に過ぎているものが対象となります。設定ではその時間関係に注意してそれぞれの時刻を決めて下さい。
設定は各種設定、メールテンプレート、予約品目の3カ所
設定は予約通知機能を有効として毎時何分に処理を実行するかを各種設定で、メールの内容をメールテンプレートで、そして送信時刻とメールの選択を予約品目でそれぞれ設定します。
通知メール送信の設定
管理画面の各種設定・予約パラメータタブに「予約通知メール」項目があります。
チェックボックスをチェックし、毎時「何」分に処理を実行するか設定します。
メール送信処理は、サイトアクセスされた時刻がこの設定時間に達していた場合に1回実行されます。そしてスケジュールはその時刻から次の時刻に処理するよう更新されます。
メール送信を中止する場合はチェックを外して下さい(変更の保存をお忘れなく)。
注)「CRON」はVer.1.34で設定表示がなくなりました。最新のWordPressを利用している場合、この設定はチェックしないで登録してください。
(20-12-11)
メールテンプレートの設定
送信する予約通知メールの件名、本文を設定します。メールテンプレートは最大10種類登録でき、次の予約品目の設定でどのテンプレートを利用するか指定します。
以下はテンプレート設定の参考です。新規追加する場合は「新規追加」を忘れずに実行して下さい。修正・削除は、上部の「テンプレート選択」で選択すると、下部に修正・削除ボタンが表示されます。
メール内で利用されている「%」で囲まれたワードは変数です。この値は予約登録や各種設定の施設で登録された内容で、この変数をメール文に埋め込んで利用します。
利用できる変数はメールテンプレートページの下部に一覧が表示されておりますが、このバージョン(Ver.1.21)より次のものが利用できるようになりました。
- %ARTICLE_NAME%
予約品目の名称 - %BOOKING_DATE%
予約年月日 - %BOOKING_TIME%
予約時刻 - %BOOKING_NUMBER%
予約人数 - %BOOKING_NOTE%
予約時の連絡事項 - %CLIENT_EMAIL%
予約者のメールアドレス - %CLIENT_POSTCODE%
予約者の郵便番号 - %CLIENT_ADDRESS1%
予約者の住所 - %CLIENT_ADDRESS2%
予約者の住所(建物号室等) - %CLIENT_ADULT%
大人の入力人数 - %CLIENT_CHILD%
小人の入力人数 - %CLIENT_BABY%
幼児の入力人数
予約品目の設定
予約通知メールを送信したい予約品目に対して、いつ、どのメールを送信するか設定します。
予約通知メールは利用日の6日前から前日、当日の時間指定で1時間前まで設定可能です。選択肢に30分前がありますが、「crontab機能」を利用した特殊な方法が必要となり、サーバーを管理する利用者でないと利用いただけません。これについて後ほど説明します。
予約通知メールは指定された時刻に1回だけ送信されます。
メールの送信は、サイトがアクセスされた時刻がここで設定した時刻、および各種設定で設定した「分」を超えたときに実行されます。
これは、それぞれの時間設定に注意が必要であることを意味します。
例えば各種設定で毎時59分に設定すると、12時59分にアクセスがあっても13時0分に達していないためメールは送信されません。メール送信のタイミングは、次の13時59分以降のアクセスになってしまいます。
次に当日の予約で指定時間前にメールを送信する場合について説明します。
選択肢は12時間前、6時間前、3時間前、1時間前の4種類あります。メール送信タイミングはアクセス時刻が予約時刻から指定時間前よりも予約時刻に近いとき、メール送信処理が実行されます。
例えば1時間前と設定しても1時間を切った時刻にアクセスがなく、予約時間の10分前にアクセスされれば、その時点でメールが送信されます。ですので、当日にメールを送信する場合はその点にご留意下さい。
選択肢を追加したい場合は、メッセージフィルター機能を利用することで追加できます。メッセージフィルター名は「mtssb_awaking_time_margin」です。
以下に2時間と4時間前の設定例を示します。
add_filter('mtssb_awaking_time_margin', 'awaking_time'); function awaking_time($times) { return array_merge($times, array( '120' => '2時間', '240' => '4時間', )); }
時間の指定は「分」で表します。日付の場合は、例えば10日前ならば「’14400′ => ’10日’」と指定します。
メールが送信されたかの確認
予約通知メールの送信は、処理がバックグランドで実行されるため送信が実行されてもその場では何も表示されません。
そこで下図のように、管理画面の予約リストで表示した一覧の右側、「確認」項目に封筒アイコンを表示するようにしました。このアイコンの表示は、予約者に予約通知メールが送信済みであることを表します。
「crontab」を利用したサーバー管理者向けの設定について
サイトにアクセスがあるかどうかに関わらず、必ず動作させる方法について説明します。機能が複雑ですので「wp_cron」と「crontab」の機能について理解していることが前提となります。
サーバーの「crontab」機能を利用する場合、WordPressの「wp_cron」モジュールを実行します。
これを利用するには各種設定で「CRON」にチェックをして下さい。これで「crontab」を実行する毎にメールの送信を確認し、対象となる予約にメールを送信する処理が実行されることになります。
また「wp_cron」を利用するため、「wp-config.php」内で以下の定数を定義しておかなければなりません。
define(‘AUTOMATIC_UPDATER_DISABLED’, true);
【上述の設定なしで動作することを確認しました(2019-04-09)。】
後は利用しているサーバーに合わせて「crontab」の設定をして下さい。
実行するモジュールはWordPressのインストールディレクトリにある「wp_cron.php」です。実行コマンドの例は「php PATH/wp_cron.php > /dev/null」などです。
追補
サーバーのcrontabを利用する場合、wp-config.phpで以下の定義文を追加してください。
define('DISABLE_WP_CRON', true);
(20-12-11)