概要
woocommerce_checkout_fields
フィルタは、WooCommerce のチェックアウトページでのフィールドの追加、削除、変更を行う際によく使用されます。このフィルタを用いることで、オンラインストアのチェックアウトプロセスをカスタマイズし、顧客からの情報を最適に収集することができます。以下は、このフィルタがよく使われるシナリオです。
- 新たなフィールドの追加(例:ギフトメッセージ)
- 既存フィールドのラベルやプレースホルダーの変更
- フィールドの必須設定の変更
- フィールドの順序の変更
- バリデーションルールの追加
- フィールドの表示/非表示の制御
構文
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