¿Cómo mostrar el código de la moneda actual en WordPress?
Aprende a mostrar el código de la moneda actual en WordPress con un shortcode personalizado que devuelve solo el código (por ejemplo, "USD", "EUR", "GBP") sin ningún texto adicional.
El problema
WPCS incluye el shortcode [wpcs_current_currency] que muestra la moneda actual, pero su resultado es:
Current currency is: USDLo que suele hacer falta: solo el código de la moneda:
USD
Esto resulta útil cuando:
- Se envían datos de la moneda a aplicaciones externas
- Se muestra la moneda dentro de tu propio texto
- Se integra con formularios u otros plugins
- Se crean presentaciones de precios personalizadas
Solución: crear un shortcode personalizado
Añade este código al archivo functions.php de tu tema hijo o usa el plugin Code Snippets:
Versión básica (solo el código de la moneda)
/**
* Custom shortcode to display current currency code
* Usage: [current_currency]
* Output: USD (or EUR, GBP, etc.)
*/
add_shortcode('current_currency', function() {
if (class_exists('WPCS')) {
global $WPCS;
return $WPCS->current_currency;
}
return '';
});Uso:
[current_currency]Resultado:
USD
Versión ampliada (con varias opciones)
Esta versión ofrece más flexibilidad con distintos formatos de salida:
/**
* Extended currency shortcode with options
* Usage: [get_currency info="code"]
* Options:
* - code: USD
* - symbol: $
* - name: US Dollar
*/
add_shortcode('get_currency', function($atts) {
if (!class_exists('WPCS')) {
return '';
}
global $WPCS;
// Default attributes
$atts = shortcode_atts(array(
'info' => 'code', // code, symbol, or name
), $atts);
$currency = $WPCS->current_currency;
// Get currency data
$currencies = $WPCS->get_currencies();
switch ($atts['info']) {
case 'symbol':
// Return currency symbol ($, €, £)
return isset($currencies[$currency]['symbol']) ? $currencies[$currency]['symbol'] : '';
case 'name':
// Return currency name (US Dollar, Euro, etc.)
return isset($currencies[$currency]['name']) ? $currencies[$currency]['name'] : '';
case 'code':
default:
// Return currency code (USD, EUR, GBP)
return $currency;
}
});Ejemplos de uso:
Currency code: [get_currency info="code"]
Currency symbol: [get_currency info="symbol"]
Currency name: [get_currency info="name"]Resultado:
Currency code: USD
Currency symbol: $
Currency name: US Dollar
Dónde añadir el código
Opción 1: functions.php del tema hijo (recomendado)
- Ve a Apariencia → Editor de temas (Appearance → Theme Editor)
- Selecciona el tema hijo (Child Theme) (¡importante!)
- Abre
functions.php - Pega el código al final del archivo
- Haz clic en Actualizar archivo (Update File)
Por qué un tema hijo:
- Las actualizaciones del tema padre no borrarán tu código
- Más seguro y fácil de mantener
Opción 2: plugin Code Snippets (más sencillo)
- Instala el plugin Code Snippets: https://wordpress.org/plugins/code-snippets/
- Ve a Snippets → Añadir nuevo (Snippets → Add New)
- Pega el código
- Configúralo en "Ejecutar en todas partes" ("Run everywhere")
- Activa el snippet
Ventajas:
- No hace falta editar archivos del tema
- Fácil de activar y desactivar
- Se mantiene al cambiar de tema
Casos de uso reales
Caso 1: texto de precio personalizado
En lugar de:
Current currency is: USD
Price: $99Puedes escribir:
Price in [current_currency]: $99Resultado:
Price in USD: $99
Caso 2: integración con formularios
Envía el código de la moneda a una aplicación externa mediante un campo oculto:
<form>
<input type="hidden" name="currency" value="[current_currency]">
<input type="text" name="amount">
<button type="submit">Submit</button>
</form>
Caso 3: contenido condicional
Combínalo con plugins de shortcodes condicionales:
[if currency="USD"]
Special offer for US customers!
[/if]
Caso 4: texto dinámico
Your cart total in US Dollar: $99.00Resultado:
Your cart total in US Dollar: $99.00
Caso 5: comparación entre varias monedas
Price: $99 [current_currency]
(Approximately €90 EUR or £80 GBP)
Avanzado: obtener la moneda detectada por GeoIP
Si quieres mostrar la moneda detectada automáticamente por GeoIP (no necesariamente la moneda activa en ese momento):
/**
* Get GeoIP detected currency
* Usage: [geoip_currency]
*/
add_shortcode('geoip_currency', function() {
if (!class_exists('WPCS')) {
return '';
}
global $WPCS;
// Get currency detected by GeoIP
$geo_currency = $WPCS->get_currency_by_country(
$WPCS->get_user_country_code()
);
return $geo_currency ? $geo_currency : $WPCS->default_currency;
});Caso de uso: mostrar al usuario qué moneda se detectó según su ubicación:
We detected you're browsing from [geoip_currency] region.
Currently viewing prices in [current_currency].
Avanzado: obtener toda la información de la moneda
Obtén todos los datos de la moneda actual:
/**
* Get comprehensive currency data
* Usage: [currency_info]
*/
add_shortcode('currency_info', function() {
if (!class_exists('WPCS')) {
return '';
}
global $WPCS;
$currency = $WPCS->current_currency;
$currencies = $WPCS->get_currencies();
$data = $currencies[$currency];
$output = sprintf(
'Code: %s | Symbol: %s | Name: %s | Rate: %s',
$currency,
$data['symbol'],
$data['name'],
$data['rate']
);
return $output;
});Resultado:
Code: EUR | Symbol: € | Name: Euro | Rate: 0.92
Dar estilo al resultado
Puedes envolver el resultado en HTML para darle estilo:
add_shortcode('styled_currency', function() {
if (!class_exists('WPCS')) {
return '';
}
global $WPCS;
$currency = $WPCS->current_currency;
return '<span class="currency-badge">' . esc_html($currency) . '</span>';
});Después añade el CSS:
.currency-badge {
background: #007bff;
color: white;
padding: 2px 8px;
border-radius: 3px;
font-size: 12px;
font-weight: bold;
}Resultado:
<span style="background:#007bff;color:white;padding:2px 8px;border-radius:3px;font-size:12px;font-weight:bold;">USD</span>
Solución de problemas
El shortcode no muestra nada
Problema: [current_currency] aparece en blanco
Posibles causas:
- WPCS no está activo
- Comprueba que el plugin WPCS esté instalado y activado
- Revisa la página de plugins
- El código no se añadió correctamente
- Comprueba que el código esté en functions.php o en Code Snippets
- Busca errores de sintaxis de PHP
- Consulta el registro de errores (si WP_DEBUG está activado)
- Conflicto con el nombre del shortcode
- Otro plugin podría usar el mismo nombre de shortcode
- Prueba con otro nombre:
[my_currency]en su lugar
Solución: añade una comprobación de errores a tu shortcode:
add_shortcode('current_currency', function() {
if (!class_exists('WPCS')) {
return '<!-- WPCS plugin not found -->';
}
global $WPCS;
if (!isset($WPCS->current_currency)) {
return '<!-- Currency not set -->';
}
return $WPCS->current_currency;
});Consulta el código fuente de la página para ver el mensaje de error.
Se muestra una moneda incorrecta
Problema: el shortcode muestra una moneda incorrecta
Posibles causas:
- Problema de caché
- Vacía todas las cachés (WordPress, navegador, servidor)
- Prueba en modo incógnito
- La moneda aún no se ha cambiado
- El usuario no ha cambiado la moneda manualmente
- La detección por GeoIP no funciona
- Revisa los ajustes de WPCS
Solución:
- Vacía las cachés
- Prueba el cambio de moneda manualmente
- Comprueba que GeoIP esté configurado en WPCS
El shortcode funciona en entradas pero no en widgets
Problema: el shortcode se muestra en las entradas, pero no en los widgets de la barra lateral
Causa: WordPress no procesa shortcodes en los widgets de forma predeterminada
Solución: añade este código para habilitar los shortcodes en los widgets:
add_filter('widget_text', 'do_shortcode');
Los caracteres especiales se muestran mal
Problema: los símbolos de moneda como € o £ aparecen como �
Solución: usa esc_html() para codificarlos correctamente:
add_shortcode('current_currency', function() {
if (class_exists('WPCS')) {
global $WPCS;
return esc_html($WPCS->current_currency);
}
return '';
});
Uso en plantillas PHP
Si necesitas usarlo en archivos de plantilla PHP en lugar de shortcodes:
<?php
if (class_exists('WPCS')) {
global $WPCS;
echo esc_html($WPCS->current_currency);
}
?>O con el shortcode:
<?php echo do_shortcode('[current_currency]'); ?>
Buenas prácticas
- Comprueba siempre que WPCS exista
if (class_exists('WPCS')) { // Your code }
Así se evitan errores si WPCS se desactiva
- Usa nombres de shortcode únicos
- Evita nombres genéricos como
[currency] - Usa nombres con prefijo:
[my_site_currency]
- Evita nombres genéricos como
- Escapa la salida
return esc_html($WPCS->current_currency);
Evita vulnerabilidades XSS - Prueba tras las actualizaciones de WPCS
- Las actualizaciones del plugin pueden cambiar la API
- Prueba tus shortcodes personalizados después de actualizar
- Documenta tus shortcodes
- Anota qué hace cada shortcode
- Añade comentarios en el código
Alternativa: usar la función integrada de WPCS
En lugar de crear un shortcode, puedes usar la función de WPCS directamente en PHP:
$currency = wpcs_current_currency();
echo $currency; // Outputs: USDFunciones disponibles:
wpcs_current_currency()- Obtiene el código de la moneda actualwpcs_convert_price($amount, $from, $to)- Convierte entre monedaswpcs_get_user_currency()- Obtiene la moneda seleccionada por el usuario
Resumen
Solución rápida (lista para copiar y pegar):
/**
* Display current currency code
* Usage: [current_currency]
* Output: USD (or EUR, GBP, etc.)
*/
add_shortcode('current_currency', function() {
if (class_exists('WPCS')) {
global $WPCS;
return esc_html($WPCS->current_currency);
}
return '';
});Añadir en:
functions.phpdel tema hijo, O BIEN- Plugin Code Snippets
Úsalo en cualquier lugar:
[current_currency]Resultado:
USD¡Eso es todo! Sencillo, limpio y funciona en cualquier lugar donde se admitan shortcodes.