Tasa BCV en WooCommerce
Muestra precios en bolívares dinámicos junto al precio en dólares. Sin plugin, sin configuración extra.
Antes de empezar: este snippet asume que los precios base de tus productos en WooCommerce están en USD. Si tus precios base son en otra moneda, ajusta el cálculo de conversión según corresponda.
Obtener tu API key
Entra a app.cotizave.com, crea una cuenta gratuita y copia tu API key desde el dashboard.
Definir la constante en wp-config.php
Abre wp-config.php y añade esta línea antes de /* That's all, stop editing! */:
define( 'COTIZAVE_API_KEY', 'tu-api-key-aqui' );
Pegar el snippet en functions.php del tema hijo
Agrega el siguiente código al final del archivo functions.php de tu tema hijo (nunca del tema padre para no perder cambios en actualizaciones):
/**
* Obtiene la tasa BCV desde Cotizave con caché de 30 minutos.
*
* @return float Tasa BCV actual o 0 si hay error.
*/
function cotizave_get_bcv_rate() {
$cached = get_transient( 'cotizave_bcv' );
if ( $cached !== false ) {
return (float) $cached;
}
$response = wp_remote_get(
'https://api.cotizave.com/v1/fx/rates/reference',
[
'headers' => [
'X-API-Key' => COTIZAVE_API_KEY,
],
'timeout' => 5,
]
);
if ( is_wp_error( $response ) ) {
return 0.0;
}
$body = json_decode( wp_remote_retrieve_body( $response ), true );
$rate = isset( $body['rate'] ) ? (float) $body['rate'] : 0.0;
if ( $rate > 0 ) {
set_transient( 'cotizave_bcv', $rate, 30 * MINUTE_IN_SECONDS );
}
return $rate;
}
/**
* Muestra el equivalente en bolívares junto al precio del producto.
* Solo modifica el HTML visible; no afecta totales ni el checkout.
*/
add_filter( 'woocommerce_get_price_html', function ( $price, $product ) {
$usd = (float) $product->get_price();
if ( $usd <= 0 ) {
return $price;
}
$bcv = cotizave_get_bcv_rate();
if ( $bcv > 0 ) {
$ves = number_format( $usd * $bcv, 2, ',', '.' );
$price .= '<br><small style="color:#666;font-size:0.85em;">≈ Bs. ' . esc_html( $ves ) . ' (BCV)</small>';
}
return $price;
}, 10, 2 );El transient de WordPress guarda la tasa en caché 30 minutos. Si la API no responde, la función devuelve 0 y el filtro no muestra nada, lo que significa que tu tienda sigue funcionando normalmente.
Casos de uso frecuentes
Tiendas B2C en Venezuela
Operan con precios en USD pero muestran el equivalente en bolívares para que el comprador local sepa cuánto pagar.
Dropshipping
Productos con precio en dólares del proveedor. Los clientes venezolanos ven automáticamente el valor en bolívares sin trabajo manual.
E-commerce con clientes mixtos
Sirves a compradores locales e internacionales. Los locales ven el precio en VES; el resto ve solo USD. Sin configuración extra.
Preguntas frecuentes
¿El snippet puede romper el checkout o el cálculo de totales?
No. El filtro woocommerce_get_price_html solo modifica el HTML que se muestra al comprador, no el precio interno que WooCommerce usa para calcular totales, impuestos ni procesar el pago. Los montos en el carrito y en el pedido siguen siendo los precios base que definiste.
¿Puedo mostrar el paralelo en lugar del BCV?
Sí. Cambia el endpoint en la función cotizave_get_bcv_rate() de /v1/fx/rates/reference a /v1/fx/rates/parallel y actualiza el nombre del transient para evitar conflictos. Puedes tener ambas funciones activas al mismo tiempo para mostrar BCV y paralelo en paralelo.
¿Hay un plugin oficial de Cotizave para WooCommerce?
Todavía no. Estamos evaluando publicar uno en el directorio de WordPress. Por ahora, este snippet cubre los casos de uso más comunes sin necesidad de instalar nada adicional.