ご注意:このセクションは開発者向けの技術資料です
カスタマイズの方法についてのレクチャーや、実装されたコードの確認・レビューは行っておりません。カスタマイズをご希望の場合は、お気軽にカスタマイズのご依頼としてお問い合わせください。本資料を参考に自己責任でカスタマイズされる場合は、動作保証の対象外となります。
v2.0.0 で新たに追加された3つの画面
| ページ | 説明 |
|---|---|
| 本人確認ページ | ゲストのお客様がリカバリーリンクをクリックすると自動表示。固定ページの作成・URL設定は不要です。 |
| 配信停止・確認ページ | メール内の配信停止リンクをクリックすると表示。誤クリックを防ぐワンクッションページです。 |
| 配信停止・完了ページ | 「配信を停止する」ボタンを押した後に表示される完了画面です。 |
通常のエンキューが使えません
上記3ページは WordPress テーマの header.php / footer.php を呼び出しません。wp_enqueue_style() / wp_enqueue_script() は動作しません。代わりに以下のフックを使ってください。
| したいこと | 使うフックの種類 |
|---|---|
| ページのデザインを変えたい | スタイルフィルター(下記参照) |
| 外部フォントを読み込みたい | <head> アクション(下記参照) |
| Google Analytics タグを埋め込みたい | </body> アクション(下記参照) |
スタイル(CSS)の変更・追加
| フック名 | 対象ページ |
|---|---|
wcex_cart_recovery_verify_styles | 本人確認ページ |
wcex_cart_recovery_optout_confirmation_styles | 配信停止・確認ページ |
wcex_cart_recovery_optout_done_styles | 配信停止・完了ページ |
デフォルトスタイルを消さないために
$css にはプラグインのデフォルトスタイルが入っています。return $css; を必ず書いてください。return ''; のように空文字を返すとすべてのスタイルが消えてしまいます。
使用例:本人確認ページのボタン色をショップカラーに変える
add_filter( 'wcex_cart_recovery_verify_styles', function( $css ) {
$css .= '.btn-primary { background: #e74c3c; }';
$css .= '.btn-primary:hover { background: #c0392b; }';
return $css;
} );
<head> 内への追加
| フック名 | 対象ページ |
|---|---|
wcex_cart_recovery_verify_head | 本人確認ページ |
wcex_cart_recovery_optout_confirmation_head | 配信停止・確認ページ |
wcex_cart_recovery_optout_done_head | 配信停止・完了ページ |
使用例:3ページ全てに同じ Google Font を読み込む
$hooks = [
'wcex_cart_recovery_verify_head',
'wcex_cart_recovery_optout_confirmation_head',
'wcex_cart_recovery_optout_done_head',
];
foreach ( $hooks as $hook ) {
add_action( $hook, function() {
echo '<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Serif+JP&display=swap">';
} );
}
</body> 直前への追加
| フック名 | 対象ページ |
|---|---|
wcex_cart_recovery_verify_footer | 本人確認ページ |
wcex_cart_recovery_optout_confirmation_footer | 配信停止・確認ページ |
wcex_cart_recovery_optout_done_footer | 配信停止・完了ページ |
使用例:配信停止完了ページにコンバージョンタグを埋め込む
add_action( 'wcex_cart_recovery_optout_done_footer', function() {
echo '<script>gtag("event", "unsubscribe_complete", { "event_category": "cart_recovery" });</script>';
} );
UTMパラメータの変更
デフォルト値:
[
'utm_source' => 'email',
'utm_medium' => 'cart_reminder',
'utm_campaign' => 'wcex_cart_reminder',
]
使用例:utm_campaign をショップ名に変更する
add_filter( 'wcex_cart_recovery_utm_params', function( $params, $row ) {
$params['utm_campaign'] = 'myshop_cart_reminder';
return $params;
}, 10, 2 );
メール送信の拡張フック(複数回送信・タイミング制御)
v2.0.0 では、カート離脱通知メールの送信処理に複数のフックと関数が追加されました。
プラグイン標準機能(1回送信)には影響しません
フックを登録しなければ、これまでどおりの動作のままです。複数回送信などの拡張は、子テーマの functions.php や独自プラグインで実装してください。
送信フロー
カート離脱記録
↓
[status: pending]
↓ (Cron が設定時間後に処理)
should_send チェック ← ① 送信をスキップできる
↓
メール本文・件名の組み立て ← ② 内容を差し替えられる
↓
before_send 発火 ← ③ 送信直前に処理を挟める
↓
wp_mail() 実行
↓ (成功) (失敗)
should_finalize チェック ← ④ ステータス遷移を制御 after_mail_failed 発火
↓ (true: デフォルト)
[status: sent] ← 以後 Cron は処理しない
↓
after_mail_sent 発火 ← ⑤ 送信成功後に処理を挟める
フィルターフック一覧
| フック名 | 役割 | 引数 |
|---|---|---|
wcex_cart_recovery_should_send | 対象レコードの送信をスキップするかを制御 | $should_send, $row, $options |
wcex_cart_recovery_mail_subject | メール件名を差し替える | $subject, $row, $options |
wcex_cart_recovery_mail_body | テキスト形式の本文を差し替える | $mail_body, $row, $options |
wcex_cart_recovery_mail_body_html | HTML形式の本文を差し替える | $mail_body_html, $row, $options |
wcex_cart_recovery_mail_headers | メールヘッダーを追加・変更する | $headers(配列), $row, $use_html |
wcex_cart_recovery_recovery_url | カート復元URLを差し替える | $recovery_url, $row |
wcex_cart_recovery_optout_url | 配信停止URLを差し替える | $optout_url, $row |
wcex_cart_recovery_should_finalize | 送信成功後のステータス遷移を制御(複数回送信の鍵) | $should_finalize, $row, $options |
アクションフック一覧
| フック名 | 役割 | 引数 |
|---|---|---|
wcex_cart_recovery_before_send | wp_mail() 呼び出し直前に処理を差し込む | $row, $mail_text, $mail_subject |
wcex_cart_recovery_after_mail_sent | 送信成功・DB更新完了後に処理を差し込む | $row, $options, $send_count |
wcex_cart_recovery_after_mail_failed | wp_mail() が失敗した場合に処理を差し込む | $row, $options |
should_finalize — 複数回送信の鍵となるフック
true(デフォルト):レコードのstatusがsentに遷移。以後 Cron はこのレコードを処理しません(標準の1回送信)。falseを返した場合:statusがpendingのまま維持されます。ただし、send_countは常に1加算されます。Cron はsend_count = 0のレコードしか処理しないため、falseを返してもCronが繰り返し処理することはありません。2通目以降を送るにはafter_mail_sentフックの中でwp_schedule_single_event()をスケジュールし、wcex_cart_recovery_send_recovery_mail()を直接呼び出す必要があります。
注意
should_finalize で false を返すと status は pending のままになります。その状態で wcex_cart_recovery_send_recovery_mail() を直接呼び出す処理を無制限に繰り返すと無限ループになります。必ず should_send と組み合わせて「送信回数が上限に達したらスキップする」処理を入れてください。
関数
| 関数名 | 説明 |
|---|---|
wcex_cart_recovery_send_recovery_mail( $row, $options ) | 指定レコードのメールを即時送信する。status = 'sent' のレコードへの二重送信・配信停止リストへの送信は自動防止。 |
DB カラム(参考)
| カラム名 | 型 | 説明 |
|---|---|---|
send_count | tinyint | 送信成功回数(初期値 0) |
last_sent_at | datetime | 最後に送信成功した日時(初期値 NULL) |
PAGE TOP