Ali*_*haq 5 php wordpress checkout city 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
}
Run Code Online (Sandbox Code Playgroud)
我使用以下方法预先选择了州:
add_filter( 'woocommerce_states', 'bbloomer_custom_woocommerce_states' );
function bbloomer_custom_woocommerce_states( $states ) {
$states['PK'] = array(
'SD' => 'Sindh',
);
return $states;
}
Run Code Online (Sandbox Code Playgroud)
但是......现在来到这个城市,我迷失了.我尝试过使用$fields['billing']['billing_city']以及$fields['billing']['billing_city']['value']无济于事.
我希望客户仅限于卡拉奇.我对WooCommerce过滤器不太熟悉,所以我需要帮助才能实现这一目标.
由于woocommerce 3 default_checkout_country和default_checkout_state过滤器挂钩现在已被弃用和替换.
同样在您的上一个功能中,如果您只想限制一个城市,则不应将您的城市包含在州数组中.相反,您应该只返回一个可能的值.
所以这将是你的代码:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中.
此代码经过测试,适用于wooCommerce版本3+
添加上面的代码并保存后,您需要
WooCommerce > Settings > General以这种方式设置位置:
然后你会在结账时得到这样的东西:
两个下拉列表只有一个值......所以你得到了你所期望的.
| 归档时间: |
|
| 查看次数: |
4566 次 |
| 最近记录: |