概要
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;
}
このコードは、フラットレート配送が選択された場合にのみ都市フィールドを表示します。