2017-08-01 7 views
1

1都市のみに販売する店舗を設定しています。私は都市のオプションを事前に塗りつぶされたフィールドに制限する方法を理解しようとしています。WooCommerce:チェックアウト時に州と都市を事前に選択して制限する

私はすでに国を制限し、私のfunctions.phpに次のコードを使用してきました:

add_filter('default_checkout_country', 'change_default_checkout_country'); 
add_filter('default_checkout_state', 'change_default_checkout_state'); 

function change_default_checkout_country() { 
    return 'PK'; // country code 
} 

function change_default_checkout_state() { 
    return 'SD'; // state code 
} 

をそして私は、次を使用して状態を事前に選択した:

add_filter('woocommerce_states', 'bbloomer_custom_woocommerce_states'); 

function bbloomer_custom_woocommerce_states($states) { 
$states['PK'] = array(
'SD' => 'Sindh', 
); 
return $states; 
} 

しかし...今、街が来て、私は迷っています。私はと$fields['billing']['billing_city']['value']を使用してみました。

私は顧客をカラチに限定したい。私はWooCommerceフィルタについてよく知らないので、これを達成するための助けが必要です。

答えて

2

woocommerce 3、default_checkout_countrydefault_checkout_stateフィルタフックは廃止と置換されているので。

また、最後の機能では、都市を1つの都市に限定したい場合は、都市を州の配列に含めるべきではありません。代わりに、可能な値を1つだけ返す必要があります。すべてのプラグインファイルでも

// default checkout country 
add_filter('default_checkout_billing_country', 'change_default_checkout_country'); 
add_filter('default_checkout_shipping_country', 'change_default_checkout_country'); 
function change_default_checkout_country() { 
    return 'PK'; // country code 
} 

// default checkout state 
add_filter('default_checkout_billing_state', 'change_default_checkout_state'); 
add_filter('default_checkout_shipping_state', 'change_default_checkout_state'); 
function change_default_checkout_state() { 
    return 'SD'; // state code 
} 

// Setting one state only 
add_filter('woocommerce_states', 'custom_woocommerce_state', 10, 1); 
function custom_woocommerce_state($states) { 
    // Returning a unique state 
    return array('PK' => array('SD' => 'Sindh')); 
} 

// Only one country at checkout 
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields', 10, 1); 
function custom_checkout_fields($fields) { 

    $fields['billing']['billing_city']['type'] = 'select'; 
    $fields['billing']['billing_city']['options'] = array('Karachi' => 'Karachi'); 
    $fields['shipping']['shipping_city']['type'] = 'select'; 
    $fields['shipping']['shipping_city']['options'] = array('Karachi' => 'Karachi'); 

    return $fields; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルに行くか:

これはあなたのコードになります。

enter image description here

このコードはテストの結果、

が一度コードの上、保存された追加3+ wooCommerceバージョンのために働くされて、あなたは場所を設定する WooCommerce > Settings > Generalにこの方法が必要になります

次に、チェックアウト時に次のような情報が得られます。

enter image description here

両方のドロップダウンには1つの値しかありません...あなたはあなたが期待しているものを得ます。

関連する問題