WooCommerce:预 select 并在结帐时限制为一个州和城市
WooCommerce: Pre-select and restrict to one state and city on checkout
我要开一家只卖给一个城市的商店。我想弄清楚如何将城市选项限制为预填字段。
我已经限制了国家/地区并在我的 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']
和 $fields['billing']['billing_city']['value']
都无济于事。
我希望客户仅限于卡拉奇。我对 WooCommerce 过滤器不是很熟悉,所以我需要帮助来实现这个。
自 woocommerce 3 起,default_checkout_country
和 default_checkout_state
过滤器挂钩现已弃用并替换。
同样在你的最后一个函数中,如果你只想限制到一个城市,你不应该将你的城市包括在州数组中。相反,您应该 return 只有一个可能的值。
这将是您的代码:
// 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 city 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 文件或任何插件文件中。
此代码已经过测试,适用于 wooCommerce 版本 3+
Once added the code above and saved, you will need in WooCommerce > Settings > General
to set locations this way:
然后您将在结账时得到类似这样的东西:
两个下拉菜单只有一个值……所以你得到了你所期望的。
我要开一家只卖给一个城市的商店。我想弄清楚如何将城市选项限制为预填字段。
我已经限制了国家/地区并在我的 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']
和 $fields['billing']['billing_city']['value']
都无济于事。
我希望客户仅限于卡拉奇。我对 WooCommerce 过滤器不是很熟悉,所以我需要帮助来实现这个。
自 woocommerce 3 起,default_checkout_country
和 default_checkout_state
过滤器挂钩现已弃用并替换。
同样在你的最后一个函数中,如果你只想限制到一个城市,你不应该将你的城市包括在州数组中。相反,您应该 return 只有一个可能的值。
这将是您的代码:
// 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 city 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 文件或任何插件文件中。
此代码已经过测试,适用于 wooCommerce 版本 3+
Once added the code above and saved, you will need in
WooCommerce > Settings > General
to set locations this way:
然后您将在结账时得到类似这样的东西:
两个下拉菜单只有一个值……所以你得到了你所期望的。