プラグインWooCommerceのwoocommerce_email_sentアクションの使用方法・解説

概要

woocommerce_email_sentは、WooCommerceでメールが送信される際にトリガーされるアクションフックです。このフックを利用することで、特定の条件に応じてWooCommerceから送信されるメールの内容をカスタマイズしたり、特定の処理を実行したりすることができます。

このアクションは以下のような実装に役立ちます:

  1. メール内容のカスタマイズ
  2. メール送信時のログ記録
  3. メール送信後の通知を行う
  4. 外部サービスへの連携
  5. メール送信の条件に応じた動作の実行
  6. 確認メールのトラッキング

構文

do_action( 'woocommerce_email_sent', $email_id, $object, $sent_to_admin, $recipient );

パラメータ

  • $email_id (string): 送信されるメールのID。
  • $object (mixed): メールに関連するオブジェクト(通常は注文や顧客情報)。
  • $sent_to_admin (bool): 管理者宛に送信されたかどうかのフラグ。
  • $recipient (string): メールの受取人アドレス。

戻り値

このアクションには戻り値はありません。フックを使って他の処理を実行することが目的です。

使用可能なプラグインおよびワードプレスのバージョン

  • WooCommerce: 5.0以降
  • WordPress: 5.0以降

この関数のアクションでの使用可能性

アクション 使用例
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_action( 'woocommerce_email_sent', 'customize_email_message', 10, 4 );

function customize_email_message( $email_id, $object, $sent_to_admin, $recipient ) {
    if ( 'customer_completed_order' === $email_id ) {
        add_filter( 'woocommerce_email_message', function( $message ) {
            $message .= "nnThank you for your order!";
            return $message;
        });
    }
}

このコードは、顧客の注文完了メールに「Thank you for your order!」というメッセージを追加します。

サンプルコード2: メール送信時のログ記録

このコードは、メールが送信されたことをログに記録します。

add_action( 'woocommerce_email_sent', 'log_email_sent', 10, 4 );

function log_email_sent( $email_id, $object, $sent_to_admin, $recipient ) {
    error_log( "Email sent: {$email_id} to {$recipient}" );
}

このコードにより、メールが送信されるたびにエラーログに情報が記録されます。

サンプルコード3: メール送信後の通知

以下のコードは、メール送信後に管理者に通知を送信します。

add_action( 'woocommerce_email_sent', 'notify_admin_on_email_sent', 10, 4 );

function notify_admin_on_email_sent( $email_id, $object, $sent_to_admin, $recipient ) {
    if ( ! $sent_to_admin ) {
        wp_mail( 'admin@example.com', 'Email Sent Notification', "An email ({$email_id}) was sent to {$recipient}." );
    }
}

このコードは、特定のメールが管理者に送信された場合、その旨を管理者に通知します。

サンプルコード4: 外部APIへのデータ送信

このコードは、メール送信時に外部APIへデータを送信します。

add_action( 'woocommerce_email_sent', 'send_data_to_api', 10, 4 );

function send_data_to_api( $email_id, $object, $sent_to_admin, $recipient ) {
    $data = [
        'email_id' => $email_id,
        'recipient' => $recipient,
    ];

    wp_remote_post( 'https://example.com/api/track_email', [
        'method' => 'POST',
        'body' => json_encode( $data ),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
    ]);
}

このコードは、メール送信時にAPIにリクエストを送信します。

サンプルコード5: 確認メールのトラッキング

以下のコードは、特定の条件に基づいて確認メールをトラッキングします。

add_action( 'woocommerce_email_sent', 'track_confirmation_email', 10, 4 );

function track_confirmation_email( $email_id, $object, $sent_to_admin, $recipient ) {
    if ( 'customer_invoice' === $email_id ) {
        // トラッキング処理を実装する
        // 例: データベースに記録する、通知を送る、など
    }
}

このコードは、確認メールが送信された場合、何かしらのトラッキング処理を実行します。

この関数について質問する


上の計算式の答えを入力してください