WPCS - WordPress Currency Switcher Professional

Moneda base del selector de monedas para WordPress: conversión de precios

La moneda base del selector de monedas para WordPress es la moneda en la que escribes tus precios. WPCS convierte cada precio a partir de ella: un importe en la moneda base multiplicado por el tipo de cambio de la moneda que el visitante ha seleccionado. La mayoría de las dudas sobre importes incorrectos vienen de tres causas: tipos de cambio introducidos al revés, precios escritos en otra moneda y confundir la moneda base con la moneda que los visitantes ven primero. Aquí verás cómo funciona la moneda base, cómo fijar precios en otra moneda de todos modos y qué ocurre cuando la cambias.

Qué es la moneda base en el selector de monedas

Abre Ajustes → Currency Switcher, pestaña Monedas (Currencies). Cada fila de moneda empieza con un botón de opción; el seleccionado marca la moneda base. Su información emergente explica qué significa: debe ser la moneda en la que están escritos tus precios. Siempre hay exactamente una.

La moneda base tiene el tipo de cambio 1. El tipo de cambio de cada una de las demás monedas indica cuántas unidades de esa moneda equivalen a una unidad de la moneda base. Con INR como base, el tipo de cambio del USD es de aproximadamente 0,012 (una rupia son 0,012 dólares), no 83. Un tipo de cambio escrito al revés hace que los precios convertidos sean miles de veces más altos.

Al construir una página, el plugin calcula importe × tipo de cambio para la moneda del visitante, sumando al tipo de cambio el valor del campo interés (interest) que hay junto a él. Los importes en la propia moneda base se muestran tal como están escritos, sin ningún cálculo. Con INR como base y [wpcs_price value=8300] en una página:

Moneda del visitanteTipo de cambioSe muestra
INR (base)18,300.00
USD0.01299.60
EUR0.01191.30

Los símbolos, los decimales y los separadores salen de la fila de cada moneda; la aritmética es siempre la misma.

Escribe cada precio una sola vez, en la moneda base

[wpcs_price value=200] no tiene ningún atributo para la moneda: el valor se lee siempre como un importe en la moneda base. Lo mismo ocurre con los importes leídos de campos personalizados con meta_value y con los importes convertidos en PHP con $WPCS->wpcs_exchange_value(). Fijas cada precio una sola vez; cuando se actualizan los tipos de cambio, todos los precios convertidos los siguen y no hay que volver a introducir nada.

Por eso, elige como base la moneda en la que piensas y facturas. Si tu lista de precios está en rupias, la base es INR y todos los valores están en rupias, aunque la mayoría de los visitantes vean dólares.

Precios escritos en otra moneda

No hay forma de indicarle a [wpcs_price] que un importe concreto está en euros mientras la base son los dólares estadounidenses. [wpcs_price value=250 EUR] se lee como 250 en la moneda base, y el EUR se ignora. Hay tres maneras de tratar estos precios:

  • Un importe propio para cada moneda. Si el precio debe ser exactamente 250 euros, 270 dólares y 215 libras, usa [wpcs_price type=fixed value=EUR:250,USD:270,GBP:215]. No se convierte nada, pero cada moneda del sitio necesita un importe; consulta precios fijos por moneda.
  • Convierte tú mismo el importe a la base y escribe ese número. Es sencillo, pero el importe en la base no sigue los cambios posteriores del tipo de cambio de la moneda original.
  • Deja que un pequeño shortcode haga la conversión en cada visualización de página, con los tipos de cambio actuales.

El shortcode siguiente toma un importe en cualquier moneda de tu lista, lo convierte a la moneda base con $WPCS->back_convert() (el importe dividido por el tipo de cambio) y pasa el resultado a [wpcs_price]:

/*
 * [price_from currency=EUR value=250]
 * The value is in the given currency; WPCS shows it in the visitor's currency.
 * Child theme functions.php or a code snippets plugin.
 */
add_shortcode('price_from', function ($atts) {
    global $WPCS;
    $atts = shortcode_atts(array('currency' => '', 'value' => 0), $atts);
    if (empty($WPCS)) {
        return '';
    }
    $amount     = (float) $atts['value'];
    $code       = strtoupper($atts['currency']);
    $currencies = $WPCS->get_currencies();
    if (isset($currencies[$code]) && $code !== $WPCS->default_currency) {
        // the same amount in the base currency, at today's rate
        $amount = $WPCS->back_convert($amount, $currencies[$code]['rate'], 6);
    }
    return do_shortcode('[wpcs_price value=' . $amount . ']');
});

Los visitantes que hayan seleccionado EUR ven exactamente 250 euros; todos los demás, incluidos los visitantes en la moneda base, ven 250 euros convertidos a los tipos de cambio actuales. El resultado es un precio normal de [wpcs_price], por lo que también se vuelve a dibujar correctamente en los sitios con Uso un plugin de caché en mi sitio (I am using cache plugin on my site) activado.

Cambiar la moneda base

Haz clic en el botón de opción de otra moneda en la pestaña Monedas (Currencies). El plugin guarda la nueva base al instante, pide al agregador seleccionado en la pestaña Opciones (Options) los tipos de cambio de todas las demás monedas respecto a ella y los coloca en los campos de tipo de cambio. Revísalos y pulsa Guardar cambios (Save options) enseguida: hasta que guardes, el sitio usa la nueva moneda base con los tipos de cambio antiguos.

Si un campo de tipo de cambio muestra un error en lugar de un número, el agregador no pudo entregarlo; los planes gratuitos de algunos servicios de tipos de cambio aceptan una sola moneda base. Errores de tipos de cambio explica los mensajes, y los tipos de cambio siempre se pueden establecer manualmente.

Lo que no cambia son tus precios. Cada value=200 escrito cuando la base era USD ahora significa 200 de la nueva moneda base. Decide la base antes de escribir los precios; si la cambias más adelante, edita todos los precios convertidos (buscar wpcs_price en las listas de Entradas (Posts) y Páginas (Pages) los encuentra en el contenido). Los precios fijos con type=fixed, las reglas de GeoIP y la moneda de bienvenida no se ven afectados.

Moneda base, moneda de bienvenida y moneda actual

Estas tres son independientes, y solo la primera tiene que ver con cómo introduces los precios:

MonedaQué decideDónde se estableceEn PHP
BaseLa moneda de cada importe que escribesBotón de opción en la pestaña Monedas (Currencies)$WPCS->default_currency
BienvenidaLo que ve un visitante nuevo cuando ninguna regla de GeoIP coincideMoneda de bienvenida (Welcome currency) en la pestaña Opciones (Options)$WPCS->get_welcome_currency()
ActualLo que ve este visitante ahoraLa elección del visitante en el selector, las reglas de GeoIP o la moneda de bienvenida$WPCS->current_currency

Tus precios pueden estar en INR mientras los visitantes nuevos empiezan en USD: establece INR como base y USD como moneda de bienvenida. Cómo elegir la primera moneda según el país se explica en establecer la moneda según el país del visitante. En tu propio código, lee la base con $WPCS->default_currency; los tipos de cambio provienen de $WPCS->get_currencies() y, en el front end, ya incluyen el interés.

Lista de comprobación

  • El botón de opción está en la moneda en la que están escritos tus precios y su tipo de cambio es 1.
  • Cada uno de los demás tipos de cambio son «unidades de esa moneda por una unidad de la base», no al revés.
  • Cada value y cada campo de precio contiene un número simple en la moneda base.
  • Los precios que deben ser exactos en otra moneda usan type=fixed o el shortcode [price_from].
  • Tras un cambio de la moneda base: tipos de cambio revisados, Guardar cambios (Save options) pulsado y precios convertidos vueltos a introducir.

Si los importes siguen sin cuadrar, abre un tema en el foro de soporte de WPCS con tu moneda base, los tipos de cambio de la pestaña Monedas (Currencies) y el shortcode que usas.