Mostrar precios en varias monedas en WordPress sin WooCommerce
Para mostrar precios en varias monedas en WordPress sin WooCommerce, una página necesita dos cosas: un selector de moneda para el visitante y precios que el plugin tenga permitido convertir. WPCS – WordPress Currency Switcher ofrece ambas para entradas, páginas, tipos de contenido personalizados y widgets en cualquier sitio WordPress. La segunda parte es donde la mayoría de las configuraciones fallan: el plugin no busca importes en tus páginas. Convierte únicamente los precios que imprimes con su shortcode. Configúralo una vez y todos los precios del sitio seguirán la moneda del visitante.
Cómo convierte WPCS un precio
Escribes cada importe una sola vez, en tu moneda base, dentro del shortcode [wpcs_price], por ejemplo [wpcs_price value=100]. Cuando WordPress genera la página, el plugin multiplica el importe por el tipo de cambio de la moneda del visitante y lo imprime con el símbolo, los decimales y los separadores de esa moneda. La elección del visitante se recuerda, de modo que todos los precios de todas las páginas aparecen en la misma moneda hasta que elija otra.
Todo lo demás de la página se queda como está. Un precio escrito como texto simple ("desde 100 $"), un campo de precio de tu tema o un widget de tabla de precios de un constructor de páginas no se tocan. Instalar el plugin o añadir el selector no cambia ningún importe por sí solo. Si un número debe cambiar de moneda, tiene que imprimirlo [wpcs_price] o las funciones PHP del plugin en una plantilla.
Por la misma razón, WPCS no modifica los precios de los productos de WooCommerce, el carrito ni el checkout, aunque WooCommerce funcione en el mismo sitio. Las tiendas necesitan el plugin hermano FOX – WooCommerce Currency Switcher; la diferencia se explica en WordPress Currency Switcher frente a WooCommerce Currency Switcher.
Paso 1: añade monedas y tipos de cambio
Instala y activa WPCS (está en wordpress.org) y abre Ajustes → Currency Switcher (Settings → Currency Switcher) en el administrador de WordPress. En la pestaña Monedas (Currencies):
- Añade monedas con Añadir moneda (Add currency) o con el Asistente de monedas (Currency Wizard). Usa el código ISO 4217 como nombre de la moneda:
EUR,GBP,ZAR, no "Euro" ni "Libra". Los servicios de tipos de cambio buscan las monedas por este código, así que un código inventado no obtiene tipo de cambio. La FAQ sobre cómo añadir una nueva moneda explica cada campo de la fila. - Marca el botón de opción de tu moneda base. Su tipo de cambio es 1, y cada importe que pongas en
[wpcs_price]se interpreta como un importe en esta moneda. Decídela antes de escribir los precios: cambiar la moneda base más adelante no reescribe los números que ya están en tus shortcodes. - Obtén los tipos de cambio. En la pestaña Opciones (Options), elige un Agregador de monedas (Currency aggregator). Yahoo y el Banco Central Europeo funcionan sin clave; Currencyapi, Open exchange rates, Currencylayer y Fixer necesitan una en Clave API del agregador (Aggregator API key). De vuelta en Monedas (Currencies), pulsa Actualizar todos los tipos (Update all rates) o escribe los tipos a mano. Una fila recién añadida empieza con tipo 0, y una moneda con tipo 0 muestra todos los precios como 0.00.
- Elige la frecuencia de actualización de los tipos en Actualización automática de tipos (Rate auto update), en la pestaña Opciones (Options), y pulsa Guardar opciones (Save options). Si los tipos no se actualizan, lee por qué no funciona la actualización automática de tipos.
Cada fila de moneda también define la posición del símbolo, los céntimos, los decimales y el formato numérico, de modo que el mismo precio puede leerse € 1.250,00 en euros y $1,250.00 en dólares.
Paso 2: muestra el selector de moneda
Los visitantes necesitan una forma de elegir moneda. Usa una o varias de estas:
- El shortcode
[wpcs]en cualquier parte del contenido. Atributos comoshow_flags=0,width='300px'ytxt_type='desc'lo ajustan; consulta la referencia del shortcode [wpcs]. El aspecto del menú desplegable se define en Vista del menú desplegable (Drop-down view), en la pestaña Opciones (Options), y los diseños creados en la pestaña Diseñador (Designer) se muestran con[wpcs sd=1], donde 1 es el ID del diseño. - El widget WordPress Currency Switcher en una barra lateral o en el área de widgets del pie de página.
- El selector lateral: en la pestaña Selector lateral (Side switcher), establece Mostrar selector fijo (Show fixed switcher) en Sí (Yes). Se queda pegado al borde de la pantalla en todas las páginas; Mostrar en las páginas (Show on the pages) y Ocultar en las páginas (Hide on the pages) lo limitan a ciertos ID de página.
- La cabecera. En un tema clásico, añade
<?php echo do_shortcode('[wpcs]'); ?>aheader.phpde un tema hijo. En un tema de bloques, añade un bloque Shortcode con[wpcs]a la parte de plantilla de la cabecera en el Editor del sitio. Para un menú, consulta cómo añadir el selector de moneda al menú.
Cuando un visitante elige una moneda, la página se recarga con ?currency=EUR en la dirección (o sin ello, si Sin datos GET en el enlace (No GET data in link) está en Sí (Yes)), y el plugin recuerda la elección para las páginas siguientes.
Paso 3: imprime cada precio con [wpcs_price]
Sustituye cada importe que deba cambiar de moneda por el shortcode. Funciona dentro de una frase, así que el resto del texto sigue siendo tuyo:
Consultations start at [wpcs_price value=49] per hour.
El value es un número simple en la moneda base, con punto para los decimales: 1250 o 1250.50. Sin símbolo de moneda ni separador de miles: value="1,250" se lee como 1.
| Dónde está el precio | Cómo insertar el shortcode |
|---|---|
| Editor de bloques | Escríbelo en un bloque Párrafo o usa un bloque Shortcode |
| Editor clásico | Escríbelo en el texto |
| Elementor | Widget Editor de texto o widget Shortcode |
| WPBakery | Elemento Bloque de texto |
| Áreas de widgets | Bloque Shortcode o widget Texto |
| Plantilla del tema (PHP) | echo do_shortcode('[wpcs_price value="49"]'); |
Los campos pensados para texto plano, como los encabezados, las etiquetas de botones, las celdas de algunos plugins de tablas y los campos de precio de los widgets de constructores, suelen imprimir el shortcode como texto. Usa para el precio uno de los lugares anteriores.
Precios guardados en campos personalizados
Si el importe está guardado en un campo personalizado, deja que el shortcode lo lea: [wpcs_price meta_value=price] toma el campo price de la entrada actual, y [wpcs_price meta_value=price post_id=42] lo toma de la entrada 42. Los campos simples de ACF se guardan con el nombre del campo, así que ese nombre sirve como meta_value. El campo debe contener un número simple. En una plantilla:
<?php
// Child theme template file, inside the loop.
// Prints the custom field "price" of the current post in the visitor's currency.
echo do_shortcode('[wpcs_price meta_value="price"]');
// Or an amount you already have in a variable, in the base currency.
$amount = 1250;
echo do_shortcode('[wpcs_price value="' . floatval($amount) . '"]');
Importes fijos y varias monedas a la vez
- Tu propio precio por moneda en lugar de uno convertido:
[wpcs_price type="fixed" value="USD:49,EUR:45,GBP:39"]. Incluye todas las monedas del sitio; una moneda que falte en la lista muestra la palabranone. - Una moneda concreta, sin importar el selector:
[wpcs_price value=100 fix_currency=EUR]. Pon dos o tres juntos para mostrar el mismo precio en varias monedas a la vez. No lo combines con Uso un plugin de caché en mi sitio (I am using cache plugin on my site): esa opción vuelve a dibujar todos los precios en la moneda del visitante después de cargar la página.
Paso 4: prueba en una página en blanco
Crea una página en borrador con solo estas dos líneas y previsualízala:
[wpcs]
[wpcs_price value=100]
Elige cada moneda en el selector. El importe debe cambiar según el tipo de cambio de esa moneda. Repite la prueba en una ventana privada del navegador, donde no has iniciado sesión, porque las cachés de página suelen omitir a los administradores. Luego interpreta el resultado:
- El importe cambia aquí pero no en tus páginas reales: esos precios no los imprime
[wpcs_price], o el campo en el que están no ejecuta shortcodes. - Muestra 0.00 en una moneda: el tipo de cambio de esa moneda es 0 o está vacío.
- El shortcode aparece como texto: el lugar donde lo escribiste no procesa shortcodes.
- Funciona solo tras recargar, o solo para ti: el sitio usa una caché de página. Establece Uso un plugin de caché en mi sitio (I am using cache plugin on my site) en Sí (Yes) en la pestaña Opciones (Options) y vacía la caché.
Cada uno de estos casos se trata paso a paso en el selector de moneda no convierte los precios.
Opcional: moneda de bienvenida, GeoIP y extras de precio
- Moneda de bienvenida (Welcome currency), en la pestaña Opciones (Options), define la moneda que ve un visitante en su primera visita. Tu moneda base puede seguir siendo INR mientras los visitantes nuevos ven USD.
- La pestaña Reglas GeoIP (GeoIP rules) elige la primera moneda según el país del visitante. La configuración y los límites están en cómo establecer la moneda según el país del visitante.
- Mostrar icono de información del precio (Show price info icon) añade junto a cada precio un icono que, al pasar el cursor, lista el importe en todas las demás monedas.
[wpcs_converter]añade un conversor de monedas y[wpcs_rates]una tabla con los tipos de cambio actuales.- En un sitio multilingüe, la moneda puede seguir al idioma: cambiar la moneda con el cambio de idioma.
Lista de comprobación
- Cada moneda usa un código ISO 4217, la moneda base está seleccionada y ningún tipo de cambio es 0 ni está vacío.
- Hay un selector visible:
[wpcs], el widget o el selector lateral. - Cada importe que deba cambiar lo imprime
[wpcs_price]con un número simple en la moneda base. - La página de prueba convierte
[wpcs_price value=100]en una ventana privada. - Con un plugin de caché de página: Uso un plugin de caché en mi sitio (I am using cache plugin on my site) está en Sí (Yes) y la caché está vaciada.
Si la página de prueba convierte y tus precios reales siguen sin hacerlo, abre un tema en el foro de soporte de WPCS con un enlace a la página y el shortcode exacto que usaste.