概要
woocommerce_email_sent
は、WooCommerceでメールが送信される際にトリガーされるアクションフックです。このフックを利用することで、特定の条件に応じてWooCommerceから送信されるメールの内容をカスタマイズしたり、特定の処理を実行したりすることができます。
このアクションは以下のような実装に役立ちます:
- メール内容のカスタマイズ
- メール送信時のログ記録
- メール送信後の通知を行う
- 外部サービスへの連携
- メール送信の条件に応じた動作の実行
- 確認メールのトラッキング
構文
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 ) {
// トラッキング処理を実装する
// 例: データベースに記録する、通知を送る、など
}
}
このコードは、確認メールが送信された場合、何かしらのトラッキング処理を実行します。