Nu pot schimba eticheta în WooCommerce cu filtrul normal
// Adaugă filtru
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
// Funcția noastră - $fields este transmis prin filtru!
function custom_override_checkout_fields( $fields ) {
$fields['order']['order_comments']['placeholder'] = 'Cerințe speciale de livrare';
$fields['billing']['billing_company']['label'] = 'Numele companiei (dacă este cazul)';
$fields['shipping']['shipping_company']['label'] = 'Numele companiei (dacă este cazul)';
$fields['billing']['billing_address_2']['placeholder'] = 'Număr casă / denumire';
$fields['shipping']['shipping_address_2']['placeholder'] = 'Număr casă / denumire';
$fields['billing']['billing_state']['required'] = true;
$fields['billing']['billing_state']['label'] = 'Județ <abbr class="required" title="required">*</abbr>';
return $fields;
}
Am folosit acest cod pentru a modifica unele câmpuri în formularul de finalizare comandă WooCommerce.
Din motive inexplicabile, eticheta pentru câmpul de stat (județ) refuză să se schimbe. Deși eticheta pentru numele companiei s-a schimbat cu succes, cea pentru stat/județ nu vrea. A devenit cu succes obligatoriu, dar nu pot modifica eticheta.
Știe cineva ce fac greșit sau dacă acesta este un bug?
Trebuie să utilizezi cârligul (hook) woocommerce_default_address_fields
:
add_filter( 'woocommerce_default_address_fields' , 'wpse_120741_wc_def_state_label' );
function wpse_120741_wc_def_state_label( $address_fields ) {
$address_fields['state']['label'] = 'Județ';
return $address_fields;
}
Aceasta (și multe altele) este descris în documentația WooCommerce: Personalizarea câmpurilor de checkout folosind acțiuni și filtre, așa că citește mai atent data viitoare... ;)
Editare:
Codul de mai sus nu funcționează în toate cazurile, deoarece la selectarea țării, câmpul de stat al formularului de checkout este actualizat prin javascript. Pentru a funcționa, este necesar să adăugați numele dorit pentru acele cazuri ca traducere, folosind cârligul woocommerce_get_country_locale
în felul următor:
add_filter('woocommerce_get_country_locale', 'wpse_120741_wc_change_state_label_locale');
function wpse_120741_wc_change_state_label_locale($locale){
// decomentează /** așa /**/ pentru a afișa localizările
/**
echo '<pre>';
print_r($locale);
echo '</pre>';
/**/
$locale['GB']['state']['label'] = __('test', 'woocommerce');
$locale['US']['state']['label'] = __('orice', 'woocommerce');
return $locale;
}
Cârligul se află în fișierul class-wc-countries.php
în funcția get_country_locale()
.

Probabil este util să menționăm că apelul ajax pentru reîncărcarea unei secțiuni a formularului de checkout este cel care suprascrie etichetele câmpurilor de formular, inițial corect suprascrise, cu valori care nu sunt suprascrise. De ce acestea nu ar folosi același hook într-un fel sau altul, rămâne un mister pentru mine.

Știu că a trecut ceva timp de atunci, dar aș vrea să adaug ceva la acest subiect, cel puțin pentru a-i cruța pe alții de aceeași frustrare pe care am experimentat-o.
Există câteva câmpuri în pagina de finalizare a comenzii care pur și simplu nu se schimbă, indiferent de filtrul pe care îl folosești. Aceste câmpuri sunt gestionate de fișierul checkout.js
. Acest fișier încarcă informații de localizare din localizarea curentă și resetează etichetele câmpurilor și valorile placeholder. Acest lucru a fost deosebit de frustrant când am încercat să schimb placeholder-ul "Street address" în "PO Box/Street address".
Pentru a schimba aceste câmpuri, trebuie să setezi o localizare în fișierul wp_config.php
, ceva de genul:
define('WPLANG', 'en_GB');
Apoi descarcă pluginul "Codestyling Localisation".
Mergi la Uneelte->Localizare, derulează în jos până la WooCommerce și rescanează fișierul tău de limbă, în acest caz ar fi fișierul pentru Engleză/Marea Britanie.
După ce a terminat scanarea, dă click pe edit și caută termenul tău, în acest caz "Street address" și adaugă traducerea ta, în cazul meu a fost "Street address/PO Box".
Apasă butonul "generate mo-file" din partea de sus și ai terminat. Instrucțiuni complete despre cum să faci asta găsești la:
http://docs.woothemes.com/document/woocommerce-localization/
