概要
woocommerce_shipping_calculator_enable_city
フィルタは、WooCommerceの配送計算機能にカスタマイズを加えるためのフックです。このフィルタを使用することで、顧客が都市情報を入力するフィールドを表示するかどうかを制御できます。具体的には、以下のような場合に使われることが多いです。
- 特定の条件に基づいて都市フィールドを隠す
- 全ての顧客に都市フィールドを必須にする
- スマートフォン向けの簡略化されたチェックアウトプロセスを提供する
- 地域によって異なる配送ポリシーを適用する
- カスタムユーザーロールのために特化したフィールドを作成する
- 地理的な制限を設定する
構文
apply_filters( 'woocommerce_shipping_calculator_enable_city', $enable );
パラメータ
$enable
: デフォルト値はtrue
またはfalse
。都市フィールドを表示するかどうかを決定します。
戻り値
- このフィルタは
boolean
を返します。true
の場合は都市フィールドが表示され、false
の場合は表示されません。
WooCommerceバージョン
- WooCommerce 2.0.0以降
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_filter( 'woocommerce_shipping_calculator_enable_city', 'hide_city_field_for_specific_country' );
function hide_city_field_for_specific_country( $enable ) {
if ( isset( $_POST['country'] ) && $_POST['country'] === 'JP' ) {
return false; // 日本の場合、都市フィールドを非表示
}
return $enable;
}
このコードは、日本の顧客向けに都市フィールドを非表示にします。
サンプルコード2
add_filter( 'woocommerce_shipping_calculator_enable_city', 'make_city_field_required' );
function make_city_field_required( $enable ) {
return true; // 都市フィールドを必須にする
}
このコードは、顧客に対して東京都市情報を必須とします。
サンプルコード3
add_filter( 'woocommerce_shipping_calculator_enable_city', 'enable_city_field_only_if_logged_in' );
function enable_city_field_only_if_logged_in( $enable ) {
return is_user_logged_in(); // ログインしている場合のみ都市フィールドを表示
}
このコードは、ユーザーがログインしている場合のみ都市フィールドを表示します。
サンプルコード4
add_filter( 'woocommerce_shipping_calculator_enable_city', 'conditional_city_field_display' );
function conditional_city_field_display( $enable ) {
$cart_total = WC()->cart->total;
return $cart_total > 100 ? true : false; // 合計金額が100を超える場合のみ都市フィールドを表示
}
このコードは、カートの合計が100を超えた場合のみ、都市フィールドを表示します。
サンプルコード5
add_filter( 'woocommerce_shipping_calculator_enable_city', 'customize_city_field_visibility' );
function customize_city_field_visibility( $enable ) {
if ( isset( $_POST['shipping_method'] ) && $_POST['shipping_method'] === 'flat_rate' ) {
return true; // フラットレートの際は都市フィールドを表示
}
return false;
}
このコードは、フラットレート配送が選択された場合にのみ都市フィールドを表示します。