概要
woocommerce_defer_transactional_emails
フィルタは、WooCommerce のトランザクショナルメール(取引に関連したメール)の送信を遅延させるために使用されます。このフィルタを活用することで、一時的にメール送信を停止したり、特定の条件下でメールを平準化することができます。このフィルタは、さまざまなシナリオで使用されることが多く、具体的には以下のような機能に応じて利用されます。
- メール送信の遅延によるパフォーマンス向上
- 特定の条件下でのメール送信制御
- 高トラフィック時のサーバー負荷の軽減
- メールキューのカスタマイズ
- 送信タイミングの最適化
- 送信するメールの内容を動的に管理
構文
add_filter('woocommerce_defer_transactional_emails', 'your_function_name');
パラメータ
woocommerce_defer_transactional_emails
: デフォルトではfalse
。true
に設定すると、トランザクショナルメールの送信が遅延されます。
戻り値
true
またはfalse
: メール送信を遅延させるかどうかを示します。
使用可能なプラグイン
- WooCommerce バージョン: 3.5.0 以降
- WordPress バージョン: 4.9 以降
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: メール送信を遅延させる
add_filter('woocommerce_defer_transactional_emails', function($defer) {
return true; // すべてのトランザクショナルメールを遅延させる
});
このコードは、すべてのトランザクショナルメールの送信を遅延させます。
サンプルコード2: 注文が特定の状態の時だけ遅延
add_filter('woocommerce_defer_transactional_emails', function($defer, $order) {
if ($order->get_status() === 'processing') {
return true; // '処理中'の注文のみ遅延
}
return false;
}, 10, 2);
このコードは、注文が「処理中」の時のみメール送信を遅延させます。
サンプルコード3: キューを利用したメール送信
add_filter('woocommerce_defer_transactional_emails', function($defer) {
// メールをキューに追加
if (!did_action('wp_mail')) {
return true; // トランザクショナルメールをキューに追加
}
return false;
});
このコードは、まだメールが送信されていないときに、メールをキューに追加します。
サンプルコード4: メール送信条件に基づいた遅延
add_filter('woocommerce_defer_transactional_emails', function($defer) {
if (is_user_logged_in()) {
return false; // ログインユーザーには即時送信
}
return true; // その他は遅延
});
このコードは、ログインしているユーザーに対しては即時にメールを送信します。
サンプルコード5: 特定のメールを遅延する
add_filter('woocommerce_defer_transactional_emails', function($defer, $email_id) {
if ($email_id === 'customer_processing_order') {
return true; // 注文処理メールを遅延
}
return false;
}, 10, 2);
このコードは、「顧客の処理中の注文」のメールのみを遅延させます。
各サンプルコードは、特定の条件に基づいてトランザクショナルメールの送信を制御する方法を示しています。これにより、メールの送信タイミングや条件を柔軟に設定することが可能となります。