FOX - WooCommerce Currency Switcher Professional

Mostrar en WooCommerce una moneda distinta de la moneda base

Mostrar en WooCommerce una moneda distinta de la moneda base es una necesidad habitual: introduces los precios en dólares estadounidenses porque es lo que pagas a tus proveedores, pero tus clientes deben ver liras turcas, o una tienda de la eurozona debe recibir a los nuevos visitantes en dólares. FOX cubre ambos casos. La Moneda de bienvenida (Welcome currency) decide lo que ve primero un visitante nuevo, y un breve fragmento de código fija toda la tienda a una única moneda. Esta guía explica la diferencia entre la moneda base y la moneda de bienvenida, por qué a veces la moneda de bienvenida parece ignorarse y cómo configurar una tienda que muestre una sola moneda distinta de la base.

La moneda base y la moneda de bienvenida son ajustes distintos

La moneda base es la marcada como Basico (Basic) en la pestaña Divisas (Currencies) de WooCommerce → Ajustes → Moneda (Currency). Al guardar, FOX la escribe como moneda de la tienda de WooCommerce. Todos los importes que escribes están en esta moneda: precios de productos, importes de cupones, gastos de envío, mínimos de envío gratuito. Las demás monedas se calculan a partir de ella con su Tarifa (Rate).

La moneda de bienvenida, en la pestaña Opciones (Options), es solo la moneda con la que empieza un visitante nuevo. No modifica ningún dato de precios, así que puedes cambiarla en cualquier momento.

Cambiar la moneda base es otra cuestión. FOX no convierte los precios de tus productos cuando marcas otra moneda como Basico (Basic): un producto que costaba 100 dólares pasa a costar 100 liras. Por eso la primera decisión es en qué moneda quieres escribir los precios:

Tu situaciónConfiguración
Fijas los precios en la moneda en la que vendes, una sola monedaConviértela en la moneda de la tienda de WooCommerce e introduce los precios en ella. No hace falta conversión.
Fijas los precios en una moneda y quieres mostrar otra, convertida al tipo de cambio actualDeja la moneda de los precios como Basico (Basic), añade la moneda de visualización con su tarifa y usa la moneda de bienvenida o el bloqueo que se describe más abajo.
Los visitantes nuevos deben empezar en otra moneda, pero pueden cambiarlaSolo la moneda de bienvenida.

Mostrar a los visitantes nuevos una moneda distinta de la moneda base

Selecciona la moneda en Moneda de bienvenida (Welcome currency), en la pestaña Opciones (Options), y guarda. Un visitante que aún no tiene una moneda almacenada la recibe en su primera visita a una página y, después, conserva la que elija en el selector. Elige una moneda cuyo interruptor Visible esté activado en la pestaña Divisas (Currencies); la descripción de la opción advierte contra una moneda oculta.

Si además usas reglas de GeoIP, estas tienen prioridad. FOX aplica la moneda de bienvenida al comienzo de la primera solicitud y las reglas de GeoIP un instante después, en la misma visita, de modo que un visitante cuyo país figura en una lista de GeoIP recibe la moneda de esa lista. La moneda de bienvenida es, en la práctica, la moneda para todos los demás; cambiar la moneda automáticamente según el país muestra cómo funcionan ambas juntas.

Por qué la moneda de bienvenida "no funciona"

Casi todos los casos de una moneda de bienvenida ignorada se deben a uno de estos motivos:

  • No eres un visitante nuevo. La moneda de bienvenida se aplica una sola vez. Después FOX almacena la moneda del visitante y la usa en todas las páginas, y cambiar más tarde la moneda de bienvenida no afecta a los visitantes que ya tienen una. Tu propio navegador tiene almacenada una moneda de tus pruebas.
  • El almacenamiento te identifica por la dirección IP. Con Almacenamiento de moneda (Currency storage) establecido en Transitorio (Transient), Memcached o Redis, todos los navegadores y dispositivos de tu conexión cuentan como el mismo visitante, de modo que una ventana privada o un segundo teléfono en la misma red Wi-Fi siguen mostrando la moneda almacenada. Prueba desde otra conexión, por ejemplo con datos móviles. Con Sesión PHP (PHP Session) o FOX Session, basta una ventana privada nueva.
  • Una regla de GeoIP cubre tu país, como se ha descrito arriba.
  • La página procede de una caché de páginas, generada para un visitante que tenía otra moneda. Activa Estoy usando un complemento de caché en mi sitio (I am using cache plugin on my site) en la pestaña Opciones (Options) y vacía la caché; por qué un selector de monedas y una caché de páginas chocan explica el resto.

Para ver qué moneda usa FOX en tu caso, coloca [woocs_show_current_currency] en una página de borrador que no esté en caché.

Fijar la tienda a una moneda de visualización

La moneda de bienvenida no puede impedir que los visitantes cambien de moneda, y los visitantes que alguna vez eligieron otra la conservan. Para mostrar a todos los visitantes una única moneda que no sea la base, en todas las páginas:

  1. Deja la moneda en la que fijas los precios como Basico (Basic) y añade la moneda de visualización en la pestaña Divisas (Currencies), con una tarifa actualizada o con Valorar la actualización automática (Rate auto update) en la pestaña Opciones (Options).
  2. Establece Moneda de bienvenida (Welcome currency) en la moneda de visualización.
  3. Pulsa limpiar todo (Clear all) para cada moneda en la pestaña GeoIP, de modo que ninguna regla elija otra moneda.
  4. Elimina todos los selectores: el shortcode [woocs], el widget, los elementos de menú y el selector lateral de la pestaña Lado (Side). También puedes desactivar Visible para la moneda base, de modo que no aparezca en ningún sitio.
  5. Añade el fragmento de código siguiente, con el código de tu moneda.
/*
 * FOX: every visitor sees and uses one currency, on every page.
 * Child theme functions.php or a code snippets plugin.
 */
add_action('wp_head', function () {
    global $WOOCS;
    if (!empty($WOOCS)) {
        $WOOCS->set_currency('TRY'); // the display currency code from the Currencies tab
    }
}, 1000);

$WOOCS->set_currency() convierte la moneda en la actual y la almacena para el visitante, de modo que las solicitudes AJAX posteriores, como el minicarrito y las actualizaciones de la página de finalizar compra, también la usan. El código debe ser el de una de tus monedas; si no figura en la lista, FOX recurre a la moneda base. La prioridad 1000 lo ejecuta después del trabajo propio de FOX en wp_head, donde se aplican las reglas de GeoIP, por lo que incluso la primera visita a una página es correcta. Muchos fragmentos antiguos usan la prioridad por defecto y pueden perder esa primera página frente a una regla de GeoIP.

El fragmento se ejecuta cuando WordPress genera una página, no cuando una caché de páginas sirve HTML almacenado. Por eso los pasos 2 y 3 son importantes: con la moneda de bienvenida establecida en la moneda de visualización y sin reglas de GeoIP, un visitante nuevo recibe la moneda de visualización por cualquier camino que pase por FOX, incluido el redibujado de precios en las páginas en caché. Un visitante recurrente que eligió otra moneda antes de que añadieras el bloqueo todavía puede verla en las páginas en caché, hasta que abra una página que nunca se almacena en caché, como el carrito o la página de finalizar compra. Allí se ejecuta el fragmento, así que la página de finalizar compra siempre muestra la moneda bloqueada.

En qué moneda paga el cliente

El bloqueo decide lo que ven los clientes. La moneda en la que se les cobra depende de Es múltiple permitido (Is multiple allowed) en la pestaña Avanzado (Advanced). Con Sí (Yes), la página de finalizar compra, el pedido y el pago se mantienen en la moneda de visualización, por lo que tu pasarela debe aceptarla. Con No, FOX recalcula el resumen del pedido y el pedido en la moneda base, y el bloqueo rodearía un resumen del pedido en moneda base con precios en la moneda de visualización; en ese caso, empieza la función con if (is_checkout()) { return; } para que la página de finalizar compra muestre la moneda base de principio a fin. Mostrar precios en la moneda local y cobrar en la moneda base explica cómo informar de ello a los clientes.

Importes que escribes, tarifas y pedidos

  • Los importes de cupones y gastos mínimos, los costes de envío y los mínimos de envío gratuito se introducen en la moneda base y se convierten al tipo de cambio actual. Si escribes un importe en liras en una tienda basada en dólares, un umbral de 1.000 liras se convierte en 1.000 dólares. Para fijar importes exactos en la moneda de visualización, activa Importe fijo individual para cupón (Individual fixed amount for coupon) e Importe fijo individual para envío (Individual fixed amount for shipping) en la pestaña Avanzado (Advanced) (ambos requieren Es múltiple permitido (Is multiple allowed) = Sí (Yes)); la pantalla de cupones y los ajustes de los métodos Flat rate (tarifa plana) y Free shipping (envío gratuito) pasan entonces a tener un campo por moneda.
  • Los precios de los productos siguen la tarifa. Cada actualización de la tarifa mueve los precios mostrados. Para obtener precios redondos, consulta redondear los precios convertidos; para obtener precios exactos en la moneda de visualización, Reglas de precios fijos individuales para cada producto (Individual fixed prices rules for each product) añade un campo de precio por moneda a cada producto.
  • Los pedidos y los correos electrónicos muestran la moneda en la que se realizó el pedido. Los informes de WooCommerce no convierten entre monedas; consulta analíticas multimoneda.

Para mostrar el precio base junto al precio de visualización, por ejemplo por transparencia con clientes extranjeros, Mostrar icono de información de precio (Show price info icon) en la pestaña Opciones (Options) añade un icono junto al precio que, al pasar el cursor, lo muestra en todas tus monedas; cómo mostrar dos monedas en las páginas de producto presenta una alternativa con código.

Lista de verificación

  • La moneda de los precios es Basico (Basic); no se esperaba que los precios de los productos se convirtieran al cambiarla.
  • La moneda de bienvenida es la que deben ver los visitantes nuevos, y es visible.
  • Las listas de GeoIP están vacías, o aceptas que los países incluidos reciban su propia moneda.
  • Para una tienda bloqueada: sin selectores, con el fragmento de prioridad 1000 y con la moneda de bienvenida igual a la moneda bloqueada.
  • Es múltiple permitido (Is multiple allowed) coincide con la moneda en la que realmente puedes cobrar.
  • Probado como visitante nuevo, en una página sin caché, desde una conexión que no haya visitado la tienda.

Si un visitante nuevo sigue viendo la moneda equivocada con las cachés desactivadas, abre un tema en el foro de soporte de FOX con tus ajustes de Divisas (Currencies), Opciones (Options) y GeoIP y el código que usas, y lo revisaremos.