プラグインWooCommerceのwoocommerce_checkout_fieldsフィルタの使用方法・解説

概要

woocommerce_checkout_fields フィルタは、WooCommerce のチェックアウトページでのフィールドの追加、削除、変更を行う際によく使用されます。このフィルタを用いることで、オンラインストアのチェックアウトプロセスをカスタマイズし、顧客からの情報を最適に収集することができます。以下は、このフィルタがよく使われるシナリオです。

  1. 新たなフィールドの追加(例:ギフトメッセージ)
  2. 既存フィールドのラベルやプレースホルダーの変更
  3. フィールドの必須設定の変更
  4. フィールドの順序の変更
  5. バリデーションルールの追加
  6. フィールドの表示/非表示の制御

構文

add_filter( 'woocommerce_checkout_fields', 'function_name' );

パラメータ

  • array $fields: チェックアウトフィールドの配列

戻り値

  • array $fields: 変更されたチェックアウトフィールドの配列

対応バージョン

  • WooCommerce バージョン: 3.x 以上
  • WordPress バージョン: 4.x 以上

この関数のアクションでの使用可能性

アクション 使用可能性
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_filter( 'woocommerce_checkout_fields', 'add_gift_message_field' );
function add_gift_message_field( $fields ) {
    $fields['billing']['billing_gift_message'] = array(
        'type'        => 'textarea',
        'label'       => __('Gift Message', 'woocommerce'),
        'placeholder' => __('Enter your message here', 'woocommerce'),
        'required'    => false,
    );
    return $fields;
}

引用元: https://woocommerce.com

サンプルコード2: フィールドのラベル変更

このサンプルコードでは、既存の「姓」フィールドのラベルを「苗字」に変更します。

add_filter( 'woocommerce_checkout_fields', 'change_last_name_label' );
function change_last_name_label( $fields ) {
    $fields['billing']['billing_last_name']['label'] = __('苗字', 'woocommerce');
    return $fields;
}

引用元: https://woocommerce.com

サンプルコード3: フィールドの必須設定の変更

ここでは、メールアドレスフィールドを必須からオプションに変更する例を示します。

add_filter( 'woocommerce_checkout_fields', 'change_email_field_required' );
function change_email_field_required( $fields ) {
    $fields['billing']['billing_email']['required'] = false;
    return $fields;
}

引用元: https://woocommerce.com

サンプルコード4: フィールドの順序の変更

このコードは、会社名フィールドを姓フィールドの前に移動します。

add_filter( 'woocommerce_checkout_fields', 'change_field_order' );
function change_field_order( $fields ) {
    $fields['billing']['billing_company']['priority'] = 10;
    $fields['billing']['billing_last_name']['priority'] = 20;
    return $fields;
}

引用元: https://woocommerce.com

サンプルコード5: フィールドの表示/非表示の制御

このサンプルでは、特定の条件に基づいて会社名フィールドを表示しないように設定しています。

add_filter( 'woocommerce_checkout_fields', 'conditionally_hide_company_field' );
function conditionally_hide_company_field( $fields ) {
    if ( ! is_user_logged_in() ) {
        unset( $fields['billing']['billing_company'] );
    }
    return $fields;
}

引用元: https://woocommerce.com

この関数について質問する


上の計算式の答えを入力してください