Cambiar el símbolo de moneda en WooCommerce: signos propios y posición
Para cambiar el símbolo de moneda en WooCommerce cuando FOX está activo, hazlo en FOX, no en WooCommerce. FOX decide qué símbolo muestra cada precio, también el de la moneda base, así que un snippet o un ajuste de WooCommerce no tiene efecto visible. A continuación verás cómo elegir un símbolo para una moneda, añadir uno que falte en la lista (US$, CA$, HK$, S/, texto simple como AED), moverlo a la izquierda o a la derecha del importe, usar una imagen para signos que aún no tienen carácter y arreglar un símbolo que un tema o un plugin de traducción sigue sustituyendo.
De dónde toma FOX el símbolo de la moneda
Cada moneda de la pestaña Divisas (Currencies) de los ajustes de FOX (WooCommerce → Ajustes → Moneda) es una fila, y dos de sus columnas controlan el signo: Símbolo (Symbol) y Posición (Position). En el sitio, FOX responde a los filtros woocommerce_currency_symbol y woocommerce_price_format de WooCommerce con prioridad 9999, usando los valores de la moneda que el visitante ha seleccionado. Esto tiene tres consecuencias:
- El símbolo y la Posición de la moneda (Currency position) de WooCommerce → Ajustes → General dejan de importar. La moneda base obtiene su símbolo y su posición de su fila de FOX, como cualquier otra moneda.
- Un snippet de
woocommerce_currency_symbolcon la prioridad por defecto se ejecuta antes que FOX, y FOX sobrescribe su resultado. No necesitas ese snippet en absoluto. - Todo lo que imprime precios a través de WooCommerce (páginas de producto, carrito, minicarrito, finalizar compra, correos enviados en esa moneda) muestra el mismo símbolo automáticamente.
La columna Símbolo (Symbol) es una lista desplegable, no un campo de texto. Ofrece la lista integrada de símbolos del mundo más tus símbolos personalizados, así que un signo que no esté en la lista hay que añadirlo primero.
Añadir un símbolo de moneda que no está en la lista
La lista integrada tiene un solo signo por moneda, y a menudo no basta: $ significa peso argentino en Argentina y dólar estadounidense en otros lugares, las rupias india y pakistaní se parecen en muchas fuentes, y algunos mercados prefieren un código como AED o SAR al signo local. Añade el tuyo:
- En la pestaña Divisas (Currencies), haz clic en Agregar símbolos de moneda (Add custom currency symbols). Se abre la pestaña Opciones (Options) en el campo Símbolos de moneda (Custom currency symbols).
- Escribe los símbolos separados por comas, sin espacios después de las comas, por ejemplo
US$,CA$,HK$,S/,AED. Un espacio después de una coma pasa a formar parte del símbolo siguiente. - Guarda los ajustes. Los símbolos nuevos se añaden al final de cada lista desplegable Símbolo (Symbol) solo después de este guardado.
- Vuelve a la pestaña Divisas (Currencies), elige el símbolo nuevo en la fila de la moneda (o añade primero la moneda con Agregar moneda (Append Currency)) y guarda otra vez.
El campo admite texto plano. Funcionan letras, signos Unicode y códigos cortos; el HTML se escapa, así que una etiqueta <img> no puede usarse como símbolo (consulta el método de la imagen más abajo). Mantén un símbolo personalizado en el campo mientras alguna moneda lo use: la lista desplegable ofrece solo los símbolos listados, así que si lo quitas, el siguiente guardado dará a esa moneda el primer símbolo de la lista.
Los desarrolladores pueden añadir símbolos en código con el filtro woocs_currency_symbols, que recibe la lista completa:
/*
* FOX: add symbols to the Symbol drop-down of the currency rows.
* Child theme functions.php or a code snippets plugin.
*/
add_filter('woocs_currency_symbols', function ($symbols) {
$symbols[] = 'US$';
$symbols[] = 'CA$';
return $symbols;
});
Una moneda sin código ISO (una unidad de fidelización, Telegram Stars) necesita algo más que un símbolo, porque WooCommerce valida los códigos de moneda. Ese caso se trata en códigos de moneda personalizados.
Posición del símbolo de moneda: izquierda o derecha, con o sin espacio
La columna Posición (Position) de cada fila tiene cuatro opciones:
| Opción | Resultado para 129.99 en PLN |
|---|---|
| $ P - izquierda ($P - left) | zł129.99 |
| P $ - derecha (P$ - right) | 129.99zł |
| $ P - espacio a la izquierda ($ P - left space) | zł 129.99 |
| P $ - espacio derecho (P $ - right space) | 129.99 zł |
El espacio es un espacio de no separación, de modo que el símbolo nunca pasa a la línea siguiente separado del importe. Cada moneda conserva su propia posición, así que una misma tienda puede mostrar $1,299.00 y 1 299,00 € uno al lado del otro. Los decimales y los separadores se configuran en la misma fila; consulta símbolos de monedas del mundo para conocer las convenciones de cada mercado.
Si la posición es correcta en FOX pero un tipo de precio sigue mostrando el signo en el lado equivocado (a menudo los rangos de productos variables o los precios en un widget de un constructor de páginas), ese precio no lo construye el formateador de WooCommerce: una plantilla del tema u otro plugin ensambla la cadena por su cuenta. Cambia a un tema por defecto como Storefront en una copia de pruebas, o desactiva uno a uno los plugins relacionados con precios, para averiguar cuál es. Dos ajustes se confunden a menudo con la posición del símbolo. La pestaña Lado (Side) posiciona el selector flotante. El campo Formato de precio personalizado (Custom price format) de la pestaña Opciones (Options) envuelve el precio ya formateado: __PRICE__ (__CODE__) imprime el precio con su símbolo y luego el código de moneda, por ejemplo 129.99 zł (PLN), pero no mueve el símbolo.
Mostrar otro símbolo sin convertir los precios
A veces el objetivo es solo un signo distinto para una región, con los mismos números. Añade la moneda, pon su tasa en 1 e introduce 1 en los campos Límite inferior (Floor) y Límite superior (Ceiling) de su columna Límites inferior/superior de la tasa (Rate floor/ceiling). Así las actualizaciones automáticas de tasas no pueden alejar la tasa de 1, y cambiar a esa moneda modifica solo el símbolo (y el código de moneda, si la tienda permite a los clientes pagar en la moneda seleccionada).
Símbolos sin carácter: el nuevo signo del dirham y otras imágenes
Algunos signos, como el signo del dirham que los Emiratos Árabes Unidos introdujeron en 2025, aún no existen como un carácter que las fuentes comunes puedan mostrar. Solo existen como imagen. La configuración fiable es un símbolo de texto que funcione en todas partes (AED, Dhs) y un pequeño script que sustituya ese texto por la imagen en el navegador del visitante:
/*
* FOX: show an image instead of a text currency symbol.
* Child theme functions.php or a code snippets plugin.
*/
add_action('wp_footer', function () {
?>
<script>
(function () {
var symbolText = 'AED'; // the text symbol selected for the currency in FOX
var imageUrl = '/wp-content/uploads/dirham-sign.svg'; // your image in the Media Library
function swapSymbols() {
document.querySelectorAll('.woocommerce-Price-currencySymbol').forEach(function (el) {
if (el.textContent.trim() === symbolText) {
el.innerHTML = '<img src="' + imageUrl + '" alt="' + symbolText + '" class="fox-symbol-img">';
}
});
}
swapSymbols();
// prices added later: mini cart, checkout updates, AJAX product lists
new MutationObserver(swapSymbols).observe(document.body, {childList: true, subtree: true});
})();
</script>
<style>
.fox-symbol-img { display: inline-block; height: 0.8em; width: auto; margin: 0; vertical-align: baseline; }
</style>
<?php
}, 999);
El script modifica cada elemento woocommerce-Price-currencySymbol, que es donde WooCommerce coloca el signo en todos los precios con formato. El símbolo de texto permanece donde no se ejecuta ningún script del navegador o donde los precios se dibujan de otra manera: correos de pedido, facturas en PDF, el administrador, la lista desplegable del selector (una opción de lista no puede contener una imagen) y el Carrito y la Finalización de compra basados en bloques, que imprimen el símbolo como parte del texto del importe. Por eso el símbolo de texto debe ser uno que tus clientes entiendan por sí solo.
Un símbolo distinto por idioma
En un sitio multilingüe puede que quieras د.إ en la versión árabe y AED en la inglesa. FOX pasa los datos de la moneda por el filtro woocs_currency_data_manipulation en el front end, de modo que el símbolo puede cambiarse en cada solicitud. La página de ajustes lee las monedas sin este filtro, así que tus símbolos guardados permanecen intactos.
/*
* FOX: currency symbol per site language (WPML).
* With Polylang use: $lang = function_exists('pll_current_language') ? pll_current_language() : '';
* Child theme functions.php or a code snippets plugin.
*/
add_filter('woocs_currency_data_manipulation', function ($currencies) {
$lang = apply_filters('wpml_current_language', null);
if ($lang === 'ar' && isset($currencies['AED'])) {
$currencies['AED']['symbol'] = 'د.إ';
}
return $currencies;
}, 20);
Para cambiar la propia moneda cuando cambia el idioma, consulta cómo cambiar la moneda con el idioma en WPML.
En el sitio aparece un símbolo equivocado
Un plugin de traducción reescribe el símbolo
FOX no traduce símbolos. Los plugins de traducción automática y el traductor del propio navegador sí lo hacen: leen SEK como una palabra y la convierten en kr, o traducen un símbolo de texto a otro idioma. Excluye los precios de la traducción en los ajustes del traductor (la mayoría tiene una opción de "no traducir" o de exclusión que admite selectores CSS): .woocommerce-Price-amount cubre todos los precios que imprime WooCommerce, .woocs_price_code es el envoltorio de FOX alrededor de los precios de producto y .woocs_price_info es el bloque de información de precio de FOX.
El símbolo aparece como un cuadro vacío o como otro signo
La fuente del tema no tiene glifo para ese carácter, y el navegador recurre a otra fuente o dibuja un cuadro. Es habitual con los signos más recientes y con la rupia y la grivna. Elige una fuente que contenga el carácter, o cambia la moneda a un símbolo de texto como Rs o UAH mediante el campo de símbolos personalizados.
El símbolo no cambia en absoluto
- El símbolo nuevo se escribió en el campo de símbolos personalizados pero no se seleccionó en la fila de la moneda, o los ajustes no se guardaron después de seleccionarlo.
- Una caché de página sigue sirviendo el HTML generado antes del cambio. Vacía la caché del sitio y la de cualquier CDN, y comprueba en una ventana privada.
- El tema o un plugin imprime los precios desde su propia plantilla con un signo fijo en el código. Si el signo es correcto con un tema por defecto, la causa es el tema.
Si el símbolo es correcto en los ajustes de FOX y sigue mal con un tema por defecto y los demás plugins desactivados, describe la página y la moneda en el foro de soporte de FOX.