概要
woocommerce_checkout_update_user_meta
アクションは、WooCommerceのチェックアウトプロセス中に適用されるフックで、新規または既存のユーザーのメタデータを更新するのに使用されます。このアクションは、ユーザーがチェックアウト時に入力した情報をカスタマイズして保存する際に特に便利です。具体的には、以下のような機能を実装する際によく使われます。
- ユーザーのカスタムフィールドの更新
- 注文の履歴に基づくユーザー情報の更新
- 特定の配信先住所の設定
- ユーザーの購買履歴に関連する情報の管理
- ユーザーの設定を元にしたマーケティングオプションの更新
- その他のカスタムデータの保存や更新
構文
add_action('woocommerce_checkout_update_user_meta', 'your_function_name', 10, 2);
パラメータ
$user_id
: 更新するユーザーのID$posted
: チェックアウト時にユーザーが入力したデータを含む配列
戻り値
このアクション自体には戻り値はありませんが、関数内で実行されたコードに応じて、ユーザーのメタデータが更新されます。
対応するWooCommerceのバージョン
WooCommerce 2.1以降
対応するWordPressのバージョン
WordPress 4.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_checkout_update_user_meta', 'update_user_custom_field', 10, 2);
function update_user_custom_field($user_id, $posted) {
if (isset($posted['custom_field_name'])) {
update_user_meta($user_id, 'custom_field_name', sanitize_text_field($posted['custom_field_name']));
}
}
このコードは、チェックアウト時に送信されたカスタムフィールドのデータをユーザーメタに保存します。
サンプルコード2: 一時的な配達指示の保存
add_action('woocommerce_checkout_update_user_meta', 'save_delivery_instructions', 10, 2);
function save_delivery_instructions($user_id, $posted) {
if (!empty($posted['delivery_instructions'])) {
update_user_meta($user_id, 'delivery_instructions', sanitize_textarea_field($posted['delivery_instructions']));
}
}
この例では、ユーザーがチェックアウト時に提供した配達指示を保存します。
サンプルコード3: ユーザーの電話番号の更新
add_action('woocommerce_checkout_update_user_meta', 'update_user_phone', 10, 2);
function update_user_phone($user_id, $posted) {
update_user_meta($user_id, 'billing_phone', sanitize_text_field($posted['billing_phone']));
}
このコードは、ユーザーの電話番号をカスタマイズして更新します。
サンプルコード4: 注文関連のカスタムデータの保存
add_action('woocommerce_checkout_update_user_meta', 'save_order_note', 10, 2);
function save_order_note($user_id, $posted) {
if (!empty($posted['order_note'])) {
update_user_meta($user_id, 'order_note', sanitize_textarea_field($posted['order_note']));
}
}
ここでは、ユーザーがチェックアウトフォームに記入した注文ノートをメタデータとして保存します。
サンプルコード5: 追加のプロモーション情報の保存
add_action('woocommerce_checkout_update_user_meta', 'save_promotion_info', 10, 2);
function save_promotion_info($user_id, $posted) {
if (!empty($posted['promotion_info'])) {
update_user_meta($user_id, 'promotion_info', sanitize_text_field($posted['promotion_info']));
}
}
この例は、プロモーション情報をユーザーのメタデータとして保存します。