概要
woocommerce_checkout_update_customer
アクションは、WooCommerceのチェックアウトプロセスにおいて、顧客情報が更新された後に実行されるフックです。このアクションは、顧客情報がデータベースに保存される前に、追加の処理を行いたい場合に利用されます。このフックを使用することで、以下のような機能を実装することができます。
- 顧客のカスタムフィールドを追加・更新する。
- 配送先情報を検証する。
- 顧客のカスタムメタデータを保存する。
- 定期的なメール通知を送信する。
- ログを取得して、顧客情報の変更をトラックする。
- 他のAPIと連携して、顧客情報を同期する。
構文
do_action( 'woocommerce_checkout_update_customer', $customer, $request );
パラメータ
$customer
: 更新された顧客オブジェクト。$request
: リクエストデータ。
戻り値
- 特に戻り値はありませんが、フック内での処理により、データベースや外部APIに影響を与えます。
使用可能なプラグインバージョン
- WooCommerce: 3.0以上
- WordPress: 5.0以上
サンプルコード
サンプルコード 1: 顧客のカスタムメタフィールドを保存する
add_action( 'woocommerce_checkout_update_customer', 'save_custom_meta_field' );
function save_custom_meta_field( $customer, $request ) {
if ( ! empty( $_POST['custom_field'] ) ) {
$customer->update_meta_data( 'custom_field', sanitize_text_field( $_POST['custom_field'] ) );
}
}
このコードは、チェックアウト時に送信されたカスタムフィールドを顧客メタデータとして保存します。
サンプルコード 2: 顧客のメールを検証する
add_action( 'woocommerce_checkout_update_customer', 'validate_customer_email' );
function validate_customer_email( $customer, $request ) {
if ( ! is_email( $customer->get_email() ) ) {
wc_add_notice( __('無効なメールアドレスが入力されています。'), 'error' );
}
}
このコードは、顧客が入力したメールアドレスが有効かどうかを確認し、無効な場合はエラーメッセージを表示します。
サンプルコード 3: 顧客に確認メールを送信する
add_action( 'woocommerce_checkout_update_customer', 'send_confirmation_email' );
function send_confirmation_email( $customer, $request ) {
$to = $customer->get_email();
$subject = '注文確認';
$message = 'ご注文ありがとうございます。';
wp_mail( $to, $subject, $message );
}
このコードは、顧客がチェックアウトを完了した後に確認メールを送信します。
サンプルコード 4: 顧客情報をログとして保存する
add_action( 'woocommerce_checkout_update_customer', 'log_customer_info' );
function log_customer_info( $customer, $request ) {
$log_entry = sprintf('顧客 %sが更新されました。', $customer->get_id());
error_log( $log_entry );
}
このコードは、顧客情報が更新されたことをログに記録します。
サンプルコード 5: 外部APIとのデータ同期
add_action( 'woocommerce_checkout_update_customer', 'sync_customer_data_with_external_api' );
function sync_customer_data_with_external_api( $customer, $request ) {
$api_url = 'https://api.example.com/sync';
$data = array(
'email' => $customer->get_email(),
'name' => $customer->get_first_name(),
);
wp_remote_post( $api_url, array(
'method' => 'POST',
'body' => json_encode( $data ),
'headers' => array( 'Content-Type' => 'application/json' ),
));
}
このコードは、顧客情報を外部APIに同期します。
この関数のアクションでの使用可能性
アクション名 | 使用例 |
---|---|
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 |
この表は、woocommerce_checkout_update_customer
アクションが他のアクションフックで使用されることがあるかどうかを示しています。