Как изменить метку поля платежного адреса в WooCommerce

В моем дизайне нестандартные метки и разметка полей биллинга. Например, «Город / Город *» должен быть «Провинция *».

Я использовал документацию WOO и фильтр woocommerce_billing_fields. И он работает с именем класса, заполнителем, создает новые поля. Но я не могу связаться с измененным лейблом.

$out_arr['billing_city']['class'][0] = 'form-row-first';
$out_arr['billing_city']['label'] = __('Province', 'woocommerce');
$out_arr['billing_postcode']['label'] = __('Zipcode', 'woocommerce');

и используя var_dump нового массива $out_arr, он показывает правильные метки

["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"
}

Но у меня все еще есть старые лейблы в интерфейсе. Есть предложения, пожалуйста?


person Alexey Svidentsov    schedule 03.08.2016    source источник


Ответы (2)


В особых случаях необходимо использовать фильтр 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 вашей активной дочерней темы или темы

Использованная литература:

person LoicTheAztec    schedule 03.08.2016
comment
@ user6573193 Извините, но я только что протестировал это на WooCommerce 3.0.9, и он работает, как и раньше… - person LoicTheAztec; 23.06.2017

Прошло некоторое время с момента вопроса OP, но я столкнулся с аналогичной ситуацией (мы используем «Департамент» вместо «Провинция») и нашел решение, которое не требует кодирования, что в моем случае упрощает задачу. Это плагин Booster для WooCommerce.

В нем есть несколько других возможностей настройки, которые я еще не пробовал, но настройка ярлыков работает отлично.

Кстати, в зависимости от настроек вашего сервера это может вызвать ошибку нехватки памяти при активации, когда WordPress возвращает пустую страницу. Временное увеличение объема памяти, выделенной PHP, позволяет завершить активацию.

person Alfonso    schedule 06.08.2018