カスタマイズ用フック一覧

カスタマイズの方法についてのレクチャーや、実装されたコードの確認・レビューは行っておりません。カスタマイズをご希望の場合は、お気軽にカスタマイズのご依頼としてお問い合わせください。本資料を参考に自己責任でカスタマイズされる場合は、動作保証の対象外となります。

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_htmlHTML形式の本文を差し替える$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_sendwp_mail() 呼び出し直前に処理を差し込む$row, $mail_text, $mail_subject
wcex_cart_recovery_after_mail_sent送信成功・DB更新完了後に処理を差し込む$row, $options, $send_count
wcex_cart_recovery_after_mail_failedwp_mail() が失敗した場合に処理を差し込む$row, $options

should_finalize — 複数回送信の鍵となるフック

  • true(デフォルト):レコードの statussent に遷移。以後 Cron はこのレコードを処理しません(標準の1回送信)。
  • false を返した場合statuspending のまま維持されます。ただし、send_count は常に1加算されます。Cron は send_count = 0 のレコードしか処理しないため、false を返してもCronが繰り返し処理することはありません。2通目以降を送るには after_mail_sent フックの中で wp_schedule_single_event() をスケジュールし、wcex_cart_recovery_send_recovery_mail() を直接呼び出す必要があります。

should_finalizefalse を返すと statuspending のままになります。その状態で wcex_cart_recovery_send_recovery_mail() を直接呼び出す処理を無制限に繰り返すと無限ループになります。必ず should_send と組み合わせて「送信回数が上限に達したらスキップする」処理を入れてください。

関数

関数名説明
wcex_cart_recovery_send_recovery_mail( $row, $options )指定レコードのメールを即時送信する。status = 'sent' のレコードへの二重送信・配信停止リストへの送信は自動防止。

DB カラム(参考)

カラム名説明
send_counttinyint送信成功回数(初期値 0
last_sent_atdatetime最後に送信成功した日時(初期値 NULL