在 Woocommerce My account 中设置运输城市和州的默认值

问题描述

在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;
 
}

这不起作用让我知道出了什么问题,或者还有其他方法可以做到这一点吗?

enter image description here

解决方法

您已经很接近了……由于 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;
}