Nu pot schimba eticheta în WooCommerce cu filtrul normal

31 oct. 2013, 09:38:21
Vizualizări: 18.2K
Voturi: 2
  // 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?

2
Comentarii

Poți verifica dacă tag-ul <abbr> este cauza, deoarece este folosit pentru abreviere, încearcă să folosești, de exemplu <span> în loc ... Doar o presupunere

Maruti Mohanty Maruti Mohanty
31 oct. 2013 14:01:15

@MarutiMohanty nu, nu funcționează deloc. Poți reproduce eroarea?

Lucky Luke Lucky Luke
31 oct. 2013 15:38:00
Toate răspunsurile la întrebare 2
3
10

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().

31 oct. 2013 13:36:48
Comentarii

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.

kontur kontur
5 oct. 2017 13:15:53

@NeophytePolyhistor Cu plăcere

Nicolai Grossherr Nicolai Grossherr
6 oct. 2017 14:18:52

@kontur Mai ales după patru ani

Nicolai Grossherr Nicolai Grossherr
6 oct. 2017 14:19:17
0

Ș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/

11 mar. 2014 07:01:58