如何在 WooCommerce 中更改帐单地址字段标签
How to change Billing address field label in WooCommerce
在我的设计中,我有非标准的账单字段标签和标记。例如 "Town / City *" 应该是 "Province *".
我使用了 WOO 文档和过滤器 woocommerce_billing_fields
。它适用于 class 名称、占位符、创建新字段。但我无法到达标签已更改。
$out_arr['billing_city']['class'][0] = 'form-row-first';
$out_arr['billing_city']['label'] = __('Province', 'woocommerce');
$out_arr['billing_postcode']['label'] = __('Zipcode', 'woocommerce');
并使用新 $out_arr
数组的 var_dump
显示正确的标签
["billing_city"]=>
array(4) {
["label"]=>
string(8) "Province"
["required"]=>
bool(true)
["class"]=>
array(2) {
[0]=>
string(14) "form-row-first"
[1]=>
string(13) "address-field"
}
["autocomplete"]=>
string(14) "address-level2"
}
但我的前端仍然有旧标签。有什么建议吗?
在特定情况下您需要使用woocommerce_default_address_fields
过滤器。此筛选器应用于所有账单和运输默认字段:
'country'
、'first_name'
、'last_name'
、'company'
、'address_1'
、'address_2'
、'city'
、'state'
或 'postcode'
.
这里我们只使用 'city'
和 'postcode'
和你的代码一样:
add_filter( 'woocommerce_default_address_fields' , 'override_default_address_fields' );
function override_default_address_fields( $address_fields ) {
// @ for city
$address_fields['city']['class'] = array('form-row-first');
$address_fields['city']['label'] = __('Province', 'woocommerce');
// @ for postcode
$address_fields['postcode']['label'] = __('Zipcode', 'woocommerce');
return $address_fields;
}
这已经过测试并且可以正常工作。
此代码片段位于您的活动子主题或主题的 function.php 文件中
参考文献:
自 OP 问题以来已经有一段时间了,但我遇到了类似的情况(我们使用 "Department" 而不是 "Province")并找到了一个不涉及编码的解决方案,这在我的案例使事情变得更容易。这是插件 Booster for WooCommerce。
它提供了我尚未尝试过的其他几种自定义可能性,但调整标签效果很好。
顺便说一句,根据您的服务器设置,它可能会在激活时导致内存不足错误,WordPress 返回一个空白页面。临时增加分配给 PHP 的内存使其能够完成激活。
在我的设计中,我有非标准的账单字段标签和标记。例如 "Town / City *" 应该是 "Province *".
我使用了 WOO 文档和过滤器 woocommerce_billing_fields
。它适用于 class 名称、占位符、创建新字段。但我无法到达标签已更改。
$out_arr['billing_city']['class'][0] = 'form-row-first';
$out_arr['billing_city']['label'] = __('Province', 'woocommerce');
$out_arr['billing_postcode']['label'] = __('Zipcode', 'woocommerce');
并使用新 $out_arr
数组的 var_dump
显示正确的标签
["billing_city"]=>
array(4) {
["label"]=>
string(8) "Province"
["required"]=>
bool(true)
["class"]=>
array(2) {
[0]=>
string(14) "form-row-first"
[1]=>
string(13) "address-field"
}
["autocomplete"]=>
string(14) "address-level2"
}
但我的前端仍然有旧标签。有什么建议吗?
在特定情况下您需要使用woocommerce_default_address_fields
过滤器。此筛选器应用于所有账单和运输默认字段:
'country'
、'first_name'
、'last_name'
、'company'
、'address_1'
、'address_2'
、'city'
、'state'
或 'postcode'
.
这里我们只使用 'city'
和 'postcode'
和你的代码一样:
add_filter( 'woocommerce_default_address_fields' , 'override_default_address_fields' );
function override_default_address_fields( $address_fields ) {
// @ for city
$address_fields['city']['class'] = array('form-row-first');
$address_fields['city']['label'] = __('Province', 'woocommerce');
// @ for postcode
$address_fields['postcode']['label'] = __('Zipcode', 'woocommerce');
return $address_fields;
}
这已经过测试并且可以正常工作。
此代码片段位于您的活动子主题或主题的 function.php 文件中
参考文献:
自 OP 问题以来已经有一段时间了,但我遇到了类似的情况(我们使用 "Department" 而不是 "Province")并找到了一个不涉及编码的解决方案,这在我的案例使事情变得更容易。这是插件 Booster for WooCommerce。
它提供了我尚未尝试过的其他几种自定义可能性,但调整标签效果很好。
顺便说一句,根据您的服务器设置,它可能会在激活时导致内存不足错误,WordPress 返回一个空白页面。临时增加分配给 PHP 的内存使其能够完成激活。