概要
woocommerce_checkout_update_order_meta
は、WooCommerceの注文チェックアウト時に、注文メタデータを更新するためのアクションフックです。このフックは、カスタムデータを注文メタに追加する際によく使用されます。具体的には以下のような場面で使用されることが多いです。
- 顧客情報の追加(例:特別なリクエストや配送情報)
- 注文へのカスタムフィールドの追加(例:ギフトラッピングの選択)
- 支払い情報の保存(例:クレジットカード情報の関連)
- 特典やクーポンの適用情報を保存
- 注文ステータスの変更に伴うメタデータの更新
- データベースに特定のトラッキング情報を保存
このアクションは、WooCommerce 3.0以降で使用可能で、WordPressでは4.0以降から対応しています。
構文
add_action('woocommerce_checkout_update_order_meta', 'custom_function_name', 10, 2);
パラメータ
$order_id
(int): 注文のID。$data
(array): 注文に関連するデータの配列。
戻り値
このアクションは戻り値を持ちません。指定したカスタムメタデータを更新または追加します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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_order_meta', 'add_custom_field_to_order_meta', 10, 2);
function add_custom_field_to_order_meta($order_id, $data) {
if (!empty($_POST['custom_field'])) {
update_post_meta($order_id, 'custom_field', sanitize_text_field($_POST['custom_field']));
}
}
このコードは、チェックアウト時に送信されたカスタムフィールドの値を注文メタデータに保存します。
サンプルコード2: 特別なリクエストを保存
add_action('woocommerce_checkout_update_order_meta', 'save_special_request', 10, 2);
function save_special_request($order_id, $data) {
if (!empty($_POST['special_request'])) {
update_post_meta($order_id, 'special_request', sanitize_textarea_field($_POST['special_request']));
}
}
このコードスニペットは、特別なリクエストフィールドの内容を注文に追加します。
サンプルコード3: 特典の適用情報を変更
add_action('woocommerce_checkout_update_order_meta', 'apply_discount_info', 10, 2);
function apply_discount_info($order_id, $data) {
if (!empty($data['discount_code'])) {
update_post_meta($order_id, 'discount_code', sanitize_text_field($data['discount_code']));
}
}
このコードは、チェックアウト時に入力されたディスカウントコードを注文メタデータに保存します。
サンプルコード4: 追加の支払い情報を保存
add_action('woocommerce_checkout_update_order_meta', 'save_payment_info', 10, 2);
function save_payment_info($order_id, $data) {
if (!empty($data['payment_method_info'])) {
update_post_meta($order_id, 'payment_method_info', sanitize_text_field($data['payment_method_info']));
}
}
このコードは、支払い方法に関する追加情報を注文メタデータに保存します。
サンプルコード5: ギフトラッピングのオプションを追加
add_action('woocommerce_checkout_update_order_meta', 'add_gift_wrap_option', 10, 2);
function add_gift_wrap_option($order_id, $data) {
if (!empty($_POST['gift_wrap'])) {
update_post_meta($order_id, 'gift_wrap', 1);
}
}
このスニペットは、ギフトラッピングオプションが選択されている場合に、その情報を注文に追加します。