概要
woocommerce_process_checkout_$TYPE_field アクションは、WooCommerce のチェックアウトプロセスにおいて、指定したタイプのフィールド(例えば、billing、shipping、またはその他のカスタムフィールド)を処理する際に呼び出されます。このフックは、開発者がチェックアウト段階で特定のフィールドに対して追加の処理を実行できるようにするために使用されます。このアクションは、多くの場合、バリデーション、データの保存、カスタムロジックの追加などの機能を実装する際に使用されます。
主な用途:
1. フォームのカスタムバリデーションを追加する
2. 特定のフィールドのデフォルト値を設定する
3. チェックアウト時のデータを別のテーブルに保存する
4. 複雑なビジネスロジックを追加する
5. ユーザー入力されたデータを変更する
6. 使用されるフィールドに基づくカスタムメッセージの表示
このアクションは、WooCommerce プラグインのバージョン 2.0 以降で利用可能で、WordPress のバージョン 4.0 以降でも利用できます。
構文
add_action('woocommerce_process_checkout_$TYPE_field', 'your_function_name', 10, 2);
パラメータ
$TYPE: 対象のフィールドタイプ(例:billingやshipping)。your_function_name: 実行される関数の名前。10: 優先順位(デフォルトは10)。2: 渡される引数の数(通常は2)。
戻り値
このアクションは特に戻り値を持たないため、返り値はありません。
この関数のアクションでの使用可能性
| アクション名 | 使用例あり |
|---|---|
| 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 |
サンプルコード
-
バリデーションの追加
add_action('woocommerce_process_checkout_billing_field', 'custom_billing_validation', 10, 2); function custom_billing_validation($fields, $errors) { if (empty($_POST['billing_phone'])) { $errors->add('validation', '電話番号を入力してください。'); } }このコードは、請求先電話番号フィールドが空である場合にエラーメッセージを追加します。
-
デフォルト値の設定
add_action('woocommerce_process_checkout_shipping_field', 'set_default_shipping_value', 10, 2); function set_default_shipping_value($fields, $order) { if (empty($_POST['shipping_method'])) { $_POST['shipping_method'] = 'flat_rate:1'; } }これは、ユーザーが配送方法を選択しない場合に、デフォルトで「フラットレート」を設定します。
-
カスタムデータの保存
add_action('woocommerce_process_checkout_billing_field', 'save_custom_data', 10, 2); function save_custom_data($fields, $order) { if (!empty($_POST['custom_field'])) { update_post_meta($order->get_id(), '_custom_field', sanitize_text_field($_POST['custom_field'])); } }このコードは、カスタムフィールドのデータを注文に保存するために使用されます。
-
特定のフィールドの変更
add_action('woocommerce_process_checkout_payment_field', 'modify_payment_fields', 10, 2); function modify_payment_fields($fields, $errors) { $fields['payment_method'] = 'credit_card'; }これは、支払い方法のデフォルト値を「クレジットカード」に変更します。
-
カスタムメッセージの表示
add_action('woocommerce_process_checkout_shipping_field', 'custom_shipping_message', 10, 2); function custom_shipping_message($fields, $order) { echo '<p class="custom-message">ご希望の配送方法を選択してください。</p>'; }これは、配送情報の欄にカスタムメッセージを表示します。