Non riesco a modificare un'etichetta in WooCommerce con il filtro normale

31 ott 2013, 09:38:21
Visualizzazioni: 18.2K
Voti: 2
  // Aggiungi il filtro
  add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// La nostra funzione hook - $fields viene passata tramite il filtro!
function custom_override_checkout_fields( $fields ) {
 $fields['order']['order_comments']['placeholder'] = 'Requisiti speciali di consegna';
 $fields['billing']['billing_company']['label'] = 'Nome azienda se applicabile';
 $fields['shipping']['shipping_company']['label'] = 'Nome azienda se applicabile';
 $fields['billing']['billing_address_2']['placeholder'] = 'Numero civico / nome';
 $fields['shipping']['shipping_address_2']['placeholder'] = 'Numero civico / nome';
 $fields['billing']['billing_state']['required'] = true;
 $fields['billing']['billing_state']['label'] = 'Contea <abbr class="required" title="obbligatorio">*</abbr>';
 return $fields;
}

Ho utilizzato questo codice per modificare alcuni campi del modulo di checkout di WooCommerce.

Per qualche motivo inspiegabile, l'etichetta per lo stato di fatturazione si rifiuta di cambiare. Anche se l'etichetta per l'azienda di fatturazione è stata modificata con successo, l'etichetta per lo stato di fatturazione non cambia. È diventato correttamente obbligatorio ma non riesco a modificare l'etichetta.

Qualcuno sa cosa sto sbagliando o se si tratta di un bug?

2
Commenti

Puoi verificare se il tag <abbr> è la causa, dato che viene utilizzato per le abbreviazioni, prova a usare ad esempio <span> invece... Solo un'ipotesi

Maruti Mohanty Maruti Mohanty
31 ott 2013 14:01:15

@MarutiMohanty no, non funziona affatto. Riesci a riprodurre l'errore?

Lucky Luke Lucky Luke
31 ott 2013 15:38:00
Tutte le risposte alla domanda 2
3
10

Devi utilizzare l'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'] = 'Contea';
     return $address_fields;
}

Questo (e altro) è descritto nella documentazione di WooCommerce: Personalizzazione dei campi del checkout tramite azioni e filtri, quindi la prossima volta leggi attentamente la documentazione... ;)


Modifica:
Il codice sopra non funziona in tutti i casi, perché alla selezione del paese il campo stato del modulo di checkout viene aggiornato via javascript. Per farlo funzionare è necessario aggiungere il nome desiderato per tali casi come traduzione, utilizzando l'hook woocommerce_get_country_locale in questo modo:

add_filter('woocommerce_get_country_locale', 'wpse_120741_wc_change_state_label_locale');
function wpse_120741_wc_change_state_label_locale($locale){
    // rimuovi il commento /** così /**/ per mostrare i locali
    /**
    echo '<pre>';
    print_r($locale);
    echo '</pre>';
    /**/
    $locale['GB']['state']['label'] = __('test', 'woocommerce');
    $locale['US']['state']['label'] = __('qualsiasi', 'woocommerce');
    return $locale;
}

L'hook si trova nel file class-wc-countries.php nella funzione get_country_locale().

31 ott 2013 13:36:48
Commenti

Probabilmente è utile far notare che la chiamata ajax per ricaricare una sezione del modulo di checkout è ciò che sovrascrive le etichette dei campi del modulo originariamente sovrascritte correttamente con valori che non sono stati sovrascritti. Perché questi non utilizzino lo stesso hook in qualche modo o forma è un mistero per me.

kontur kontur
5 ott 2017 13:15:53

@NeophytePolyhistor È stato un piacere

Nicolai Grossherr Nicolai Grossherr
6 ott 2017 14:18:52

@kontur Soprattutto dopo quattro anni

Nicolai Grossherr Nicolai Grossherr
6 ott 2017 14:19:17
0

Sono consapevole che sia passato un po' di tempo, ma vorrei aggiungere qualcosa a questa discussione, se non altro per risparmiare ad altri la stessa frustrazione che ho provato.

Ci sono alcuni campi nella pagina di checkout che semplicemente non cambiano, indipendentemente dal filtro utilizzato. Questi campi sono gestiti dal file checkout.js. Questo file carica le informazioni di localizzazione dalla lingua corrente e reimposta le etichette e i placeholder dei campi con quei valori. È stato particolarmente frustrante cercare di cambiare il placeholder "Street address" in "PO Box/Street address".

Per modificare questi campi, è necessario impostare una localizzazione nel file wp_config.php in questo modo:

define('WPLANG', 'en_GB');

Successivamente, scarica il plugin "Codestyling Localisation".

Vai su Strumenti->Localizzazione, scorri fino a trovare WooCommerce e riesegui la scansione del tuo file di lingua, in questo caso sarebbe il file English/United Kingdom.

Dopo la scansione, clicca su modifica e cerca il tuo termine, in questo caso "Street address", e aggiungi la tua traduzione, nel mio caso "Street address/PO Box".

Clicca il pulsante "Generate MO-file" in alto e il gioco è fatto. Puoi trovare istruzioni complete su come farlo a questo link:

http://docs.woothemes.com/document/woocommerce-localization/

11 mar 2014 07:01:58