【问题标题】:Set a default value for shipping city and state in Woocommerce My account在 Woocommerce 我的帐户中为送货城市和州设置默认值
【发布时间】:2021-04-26 15:16:18
【问题描述】:

在 woocommerce 中已将发货国家/地区限制在 IN 在结帐时设置国家、州和城市的默认值 我想在我的帐户/编辑地址/仅在送货地址中执行相同的操作 尝试使用此代码,但它不起作用

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

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

【问题讨论】:

  • 请对我的回答提供一些反馈。

标签: php wordpress woocommerce account shipping


【解决方案1】:

您已经很接近了……由于 WooCommerce 中的 Shipping State 值是州代码,因此您需要将“Maharashtra”替换为“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');
        }
    }
}

【讨论】:

  • 即使我尝试禁用所有插件但仍然没有用
  • @MirzaAreebBaig 也许这与您的主题自定义或您进行的其他自定义有关......我已经在使用 StoreFront 主题(官方 WooCommerce 免费主题)的上一个 WooCommerce 版本上测试了这一点
  • 嘿@LoicTheAztec 我禁用了我的主题(波尔图)并尝试了该代码,但仍然没有用。
  • 我用 StoreFront 主题进行了全新安装,但这里的字段仍然是空白的截图=snipboard.io/xuZMzv.jpg
【解决方案2】:

你可以使用地址挂钩。

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

【讨论】:

  • 您好,谢谢您的回复。不幸的是,这不起作用我不想更改标签,但我想添加一个默认值我什至尝试使用它的代码,例如 $address_fields['state']['default'] = 'State';还是不行。
  • 这是一个截图:prnt.sc/xfe0tc 我想在 City & State 中设置默认值,Country 已经默认为 IN
  • 根据你的需要改变上面的代码试试看。
  • 也尝试了“价值”,但仍然无法正常工作。
  • 其他方式 add_filter( 'woocommerce_checkout_fields', 'set_default_checkout_field_values' );功能 set_default_checkout_field_values($fields) { $fields['shipping']['shipping_city']['default'] = 'Mumbai'; $fields['shipping']['shipping_state']['default'] = 'Maharashtra';返回$字段; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2021-06-05
  • 2021-07-26
  • 2020-08-12
  • 1970-01-01
  • 2014-10-25
  • 2019-03-09
相关资源
最近更新 更多