WooCommerce: Modificare il paese predefinito nella pagina del carrello

14 gen 2013, 15:45:36
Visualizzazioni: 18.3K
Voti: 1

Vorrei cambiare il paese predefinito nella pagina del carrello a nessuno, cioè far apparire "Seleziona un paese..." come predefinito nel menu a tendina dei paesi.

Ho esaminato questo snippet della documentazione di WooCommerce che utilizza il filtro default_checkout_country ma sembra applicarsi solo alla pagina di checkout (e non alla pagina del carrello), come dice il titolo. Ho anche testato questo circondando il apply_filters('default_checkout_country', ... nei file dove appare con istruzioni echo e non compaiono da nessuna parte nel markup generato per la pagina del carrello.

Poiché utilizziamo PayPal Express Checkout, non usiamo la pagina di checkout integrata di WooCommerce, quindi sembra che lo snippet menzionato sopra non si applichi e sia necessaria un'altra soluzione.

Il mio passo successivo è stato esaminare woocommerce/templates/cart/shipping-calculator.php dove viene generato l'elenco delle opzioni dei paesi nella pagina del carrello. C'è una chiamata a $woocommerce->customer->get_shipping_country(). Questa funzione in woocommerce/classes/class-wc-customer.php semplicemente preleva le variabili $_SESSION['customer']['shipping_country']. L'unico posto in cui queste variabili vengono impostate è nella funzione set_shipping_to_base() nello stesso file e l'unico posto in cui questa funzione viene chiamata (condizionalmente) è in woocommerce/shortcodes/shortcode-cart.php che presumo generi il carrello dallo shortcode utilizzato nella pagina del carrello generata automaticamente. Ho aggiunto un'istruzione echo al blocco in quel file dove viene chiamata la funzione, ma nulla è apparso nel markup, quindi mi sono bloccato lì.

Tuttavia, l'indagine di cui sopra sembra essere un po' una falsa pista, poiché le variabili di sessione menzionate sembrano essere effettivamente impostate dall'opzione Paese/Regione di Base nella scheda Generale, poiché variava di conseguenza quando la variabile $_SESSION veniva stampata in un browser dove i cookie e la cache erano stati precedentemente eliminati. Quindi sono bloccato anche qui. Vorrei che l'impostazione del Paese/Regione di Base rimanesse quella impostata, ma comunque non avere alcun paese predefinito a meno che il visitatore non lo abbia effettivamente selezionato.

Qualche idea?

2
Commenti

Questa non è una risposta, ma ho realizzato che il paese scelto nel calcolatore non ha alcuna influenza sul prezzo finale di spedizione. Quando si utilizza PayPal Express Checkout il prezzo di spedizione viene effettivamente calcolato in base al paese di spedizione restituito da PayPal (che è lo stesso del paese di fatturazione se non viene inserito un indirizzo di spedizione diverso). Questo rende la questione un po' meno urgente per noi.

ivvi ivvi
21 gen 2013 15:37:40

Guarda questo codice di MikeJolly: https://gist.github.com/mikejolley/2974310 Spero ti sia utile quanto lo è stato per me :)

ipruthi ipruthi
19 mar 2013 03:09:55
Tutte le risposte alla domanda 2
0

Ho lo stesso problema, ma ho bisogno di impostare il paese su Stati Uniti (US), ecco come l'ho risolto:

add_action('woocommerce_add_to_cart' , 'set_country_befor_cart_page'); 

function set_country_befor_cart_page(){

    WC()->customer->set_billing_country('US');
    WC()->customer->set_shipping_country('US');
}

Spero possa essere d'aiuto.

10 mar 2015 22:16:34
0

Per caso e semplicemente giocherellando, ho ideato questo:

add_filter( 'woocommerce_checkout_fields' , 'default_country_fields' );

function default_country_fields( $fields ) {

 $_SESSION['customer']['country'] = 'Seleziona un paese...';
 $_SESSION['customer']['shipping_country'] = 'Seleziona un paese...';

 return $fields;
}

Come puoi vedere, sto semplicemente impostando le variabili $_SESSION come necessario. Sono ancora un po' un principiante in questo, quindi non sono ancora sicuro se ci possano essere ripercussioni negative con questo metodo. E probabilmente esiste un hook o un filtro più appropriato per questo, ma quello che ho usato l'ho preso da qui:

tutorial-personalizzazione-campi-checkout-utilizzando-azioni-e-filtri

Se non sei loggato o non hai impostato informazioni di fatturazione/spedizione sul tuo account, vedrai correttamente i valori predefiniti per il paese di fatturazione/spedizione. Tuttavia, quando accedi con un account utente che ha informazioni di fatturazione o spedizione impostate, questa funzione verrà ignorata e i valori predefiniti selezionati rifletteranno le informazioni di fatturazione del tuo account utente.

4 feb 2013 23:23:53