问题描述
在woocommerce中已经限制在IN的发货国 结帐时设置国家、州和城市的默认值 我想在 my-account/edit-address/ 只在送货地址中做同样的事情 尝试使用此代码但它不起作用
add_filter( 'woocommerce_shipping_fields','default_shipping_address' );
function default_shipping_address( $fields ) {
$fields['shipping_city']['default'] = 'Mumbai';
$fields['shipping_state']['default'] = 'Maharashtra';
return $fields;
}
这不起作用让我知道出了什么问题,或者还有其他方法可以做到这一点吗?
解决方法
您已经很接近了……由于 WooCommerce 中的运输州值是州代码,因此您需要将“马哈拉施特拉邦”替换为“MH”(对于印度),如下所示:
add_filter( 'woocommerce_shipping_fields','set_default_my_account_shipping_city_state_values' );
function set_default_my_account_shipping_city_state_values( $fields ) {
// Targeting My account section
if( is_account_page() ) {
$fields['shipping_city']['default'] = 'Mumbai';
$fields['shipping_state']['default'] = 'MH'; // <== HERE
}
return $fields;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。
替代方案:如果它真的不适合您,您可以尝试使用以下方法:
add_action( 'template_redirect','set_default_shipping_city_and_state_values' );
function set_default_shipping_city_and_state_values( $fields ) {
if( is_wc_endpoint_url( 'edit-address' ) ) {
if ( WC()->customer->get_shipping_city() === '' ) {
WC()->customer->Set_shipping_city('Mumbai');
}
if ( WC()->customer->get_shipping_state() === '' ) {
WC()->customer->Set_shipping_state('MH');
}
}
}
,
您可以使用地址挂钩。
add_filter( 'woocommerce_default_address_fields','default_shipping_address' );
function default_shipping_address( $fields ) {
$fields['shipping_city']['value'] = 'Mumbai';
$fields['shipping_state']['value'] = 'Maharashtra';
return $fields;
}