WooCommerce: Cambiar el país predeterminado en la página del carrito

14 ene 2013, 15:45:36
Vistas: 18.3K
Votos: 1

Quiero cambiar el país predeterminado en la página del carrito a ninguno, es decir, que aparezca "Seleccionar un país..." como valor predeterminado en la lista desplegable de países.

He revisado este fragmento de código de WooCommerce Docs que utiliza el filtro default_checkout_country, pero solo parece aplicarse a la página de pago (y no a la página del carrito), como indica su título. También lo probé rodeando el apply_filters('default_checkout_country', ... en los archivos donde aparece con declaraciones echo y no aparecen en ningún lugar del marcado generado para la página del carrito.

Como estamos usando PayPal Express Checkout, no utilizamos la página de pago integrada de WooCommerce, por lo que parece que el fragmento mencionado anteriormente no aplica y se necesita otra solución.

Mi siguiente paso fue analizar woocommerce/templates/cart/shipping-calculator.php donde se genera la lista de opciones de países en la página del carrito. Hay una llamada a $woocommerce->customer->get_shipping_country(). Esa función en woocommerce/classes/class-wc-customer.php simplemente recoge las variables $_SESSION['customer']['shipping_country']. El único lugar donde se establecen esas variables es en la función set_shipping_to_base() en el mismo archivo, y el único lugar donde se llama (condicionalmente) a esa función es en woocommerce/shortcodes/shortcode-cart.php que supongo genera el carrito desde el shortcode usado en la página de carrito autogenerada. Agregué una declaración echo al bloque en ese archivo donde se llama a esa función, pero no apareció nada en el marcado, así que me quedé estancado ahí.

Sin embargo, esta investigación parece ser una pista falsa, ya que las variables de sesión mencionadas anteriormente parecen estar establecidas por la configuración de País/Región base en la pestaña General, ya que variaban en consecuencia cuando la variable $_SESSION se imprimía en un navegador donde se habían borrado previamente las cookies y la caché. Así que también estoy atascado aquí. Me gustaría que la configuración de País/Región base permanezca como está, pero que no haya un país predeterminado a menos que el visitante lo haya seleccionado realmente.

¿Alguna idea?

2
Comentarios

Esta no es una respuesta, pero me he dado cuenta de que el país seleccionado en la calculadora no influye en el precio final del envío. Al usar PayPal Express Checkout, el precio del envío en realidad se calcula según el país de envío devuelto por PayPal (que es el mismo que el país de facturación si no se introduce una dirección de envío diferente). Esto hace que el asunto sea menos urgente para nosotros.

ivvi ivvi
21 ene 2013 15:37:40

Mira este código de MikeJolly: https://gist.github.com/mikejolley/2974310 Espero que te ayude tanto como me ayudó a mí :)

ipruthi ipruthi
19 mar 2013 03:09:55
Todas las respuestas a la pregunta 2
0

Yo tengo el mismo problema, pero necesito configurar el país a EE.UU., así es como lo solucioné:

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');
}

Espero que ayude.

10 mar 2015 22:16:34
0

Por casualidad y simplemente jugando, he llegado a esto:

add_filter( 'woocommerce_checkout_fields' , 'default_country_fields' );

function default_country_fields( $fields ) {

 $_SESSION['customer']['country'] = 'Selecciona un país...';
 $_SESSION['customer']['shipping_country'] = 'Selecciona un país...';

 return $fields;
}

Como puedes ver, simplemente estoy configurando las variables $_SESSION según sea necesario. Soy algo novato en esto, así que todavía no sé si hay alguna repercusión negativa con este método. Y probablemente haya un hook o filtro más apropiado para esto, pero lo que usé lo obtuve de aquí:

tutorial-personalizando-campos-de-pago-usando-acciones-y-filtros

Si no has iniciado sesión o no tienes información de facturación/envío configurada en tu cuenta, verás correctamente los valores por defecto para el país de facturación/envío. Sin embargo, al iniciar sesión con una cuenta de usuario que tenga información de facturación o envío configurada, esta función será anulada y los valores predeterminados seleccionados reflejarán los de la información de facturación de tu cuenta de usuario.

4 feb 2013 23:23:53