需要使Woocommerce结帐状态字段

时间:2018-05-23 09:44:34

标签: php wordpress woocommerce state checkout

所以这个问题可能有一个简单的解决方案,但我暂时陷入困境。在最后一次更新(Woocommerce 3.3.5)后,我在结帐页面上的状态字段有问题,因为它不是强制性的,人们只是跳过它。我真的需要这件事是强制性的,因为我已将我的网站连接到送货公司服务器,并通过API将订单信息直接发送给他们。

我尝试将它添加到我的functions.php中,问题是当我进入结帐页面时,该字段有一个星号,但是只有一秒钟。

add_filter( 'woocommerce_billing_fields', 'woo_filter_state_billing', 
10, 1 );
add_filter( 'woocommerce_shipping_fields', 
'woo_filter_state_shipping', 10, 1 );

function woo_filter_state_billing( $address_fields ) { 
$address_fields['billing_state']['required'] = true;
return $address_fields;
}
function woo_filter_state_shipping( $address_fields ) { 
$address_fields['shipping_state']['required'] = true;
return $address_fields;
}

感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:2)

默认情况下,在上一个woocommerce版本3.3.5中,状态字段是必需的...所以在你的情况下,某些东西正在制作那个字段" not"必需的。

您可以尝试此(同时为结算和发货字段工作)

add_filter( 'woocommerce_default_address_fields' , 'make_state_field_required', 90, 1 );
function make_state_field_required( $address_fields ) {
     $address_fields['state']['required'] = true;

     return $address_fields;
}

代码放在活动子主题(或活动主题)的function.php文件中。它可以工作。

答案 1 :(得分:0)

截至2019年1月,这对我来说效果更好

add_filter( 'woocommerce_billing_fields', 'woo_filter_state_billing', 10, 1 );
add_filter( 'woocommerce_shipping_fields', 'woo_filter_state_shipping', 10, 1 );
function woo_filter_state_billing( $address_fields ) {
  $address_fields['billing_state']['required'] = true;
    return $address_fields;
}
function woo_filter_state_shipping( $address_fields ) {
    $address_fields['shipping_state']['required'] = true;
    return $address_fields;
}

答案 2 :(得分:0)

也许您是说“国家”?我遇到了这个问题,因为该字段莫名其妙是可选的。 在这种情况下,代码将是:

add_filter( 'woocommerce_billing_fields' , 'make_country_field_required', 90, 1 );
function make_country_field_required( $address_fields ) {
     $address_fields['billing_country']['required'] = true;

     return $address_fields;
}