您使用不再有效(因为WooCommerce 3.0.4 - link to github issue here)的方法。这不完全是一个错误,而是一个规范的变化。
要解决这个问题,您只需调整每个字段的优先级以适合您所需的顺序。
add_filter("woocommerce_checkout_fields", "custom_override_checkout_fields", 1);
function custom_override_checkout_fields($fields) {
$fields['billing']['billing_first_name']['priority'] = 1;
$fields['billing']['billing_last_name']['priority'] = 2;
$fields['billing']['billing_company']['priority'] = 3;
$fields['billing']['billing_country']['priority'] = 4;
$fields['billing']['billing_state']['priority'] = 5;
$fields['billing']['billing_address_1']['priority'] = 6;
$fields['billing']['billing_address_2']['priority'] = 7;
$fields['billing']['billing_city']['priority'] = 8;
$fields['billing']['billing_postcode']['priority'] = 9;
$fields['billing']['billing_email']['priority'] = 10;
$fields['billing']['billing_phone']['priority'] = 11;
return $fields;
}
add_filter('woocommerce_default_address_fields', 'custom_override_default_locale_fields');
function custom_override_default_locale_fields($fields) {
$fields['state']['priority'] = 5;
$fields['address_1']['priority'] = 6;
$fields['address_2']['priority'] = 7;
return $fields;
}
请注意,它不是代码中按顺序调整布局的行,而是分配给该字段的优先级。在这种情况下,我将['billing_state']
优先级更改为5
,它在['billing_country']
之后和['billing_address_1']
之前为(,在本示例中为)。
编辑:
按照该意见,这是不工作由于某种原因(它的工作对我的第一次测试WooCommerce安装,但我设法得到它改变了存储位置后失败)。
经过一番挖掘,我发现默认的语言环境设置得到应用覆盖顶部(不知道该怎么解释,但裸露与我)。
我设法得到一个安装运行在上面的代码不工作,并设法通过加入以下代码,以及解决它:
add_filter('woocommerce_default_address_fields', 'custom_override_default_locale_fields');
function custom_override_default_locale_fields($fields) {
$fields['state']['priority'] = 5;
$fields['address_1']['priority'] = 6;
$fields['address_2']['priority'] = 7;
return $fields;
}
我已经添加了额外的代码段的第一个代码块验证整个块。
$ fields ['billing'] ['billing_first_name'] [ 'priority'] = 1; $ fields ['billing'] ['billing_last_name'] ['priority'] = 2; $ fields ['billing'] ['billing_country'] ['priority'] = 3; $ fields ['billing'] ['billing_state'] ['priority'] = 4; $ fields ['billing'] ['billing_address_1'] ['priority'] = 5; $ fields ['billing'] ['billing_address_2'] ['priority'] = 6; $ fields ['billing'] ['billing_phone'] ['priority'] = 7; $ fields ['billing'] ['billing_email'] ['priority'] = 8; - 这是显示字段按以下顺序,名字,最后,国家,电话,邮件,地址1,地址2,状态 –
@YahyaHussein有可能是有另一个功能做同样的事情(无论是在你的主题文件,或另一个插件)。我的建议是将过滤器的优先级调整为像add_filter(“woocommerce_checkout_fields”,“custom_override_checkout_fields”,999);'以便它运行__after__任何潜在的重复功能。 – Frits
似乎应该工作,但它不工作 –