WPCS - WordPress Currency Switcher Professional

Devise de base du sélecteur de devises WordPress : conversion des prix

La devise de base du sélecteur de devises WordPress est celle dans laquelle vous rédigez vos prix. WPCS convertit chaque prix à partir de celle-ci : un montant dans la devise de base multiplié par le taux de change de la devise que le visiteur a sélectionnée. La plupart des questions sur des montants erronés viennent de trois causes : des taux saisis à l'envers, des prix rédigés dans une autre devise, et la confusion entre la devise de base et la devise que les visiteurs voient en premier. Voici comment fonctionne la devise de base, comment fixer malgré tout un prix dans une autre devise, et ce qui se passe quand vous la modifiez.

Ce qu'est la devise de base dans le sélecteur de devises

Ouvrez Réglages (Settings) → Currency Switcher, onglet Devises (Currencies). Chaque ligne de devise commence par un bouton radio ; celui qui est sélectionné désigne la devise de base. Son info-bulle en donne le sens : il s'agit de la devise dans laquelle vos prix sont rédigés. Il y en a toujours une seule, exactement.

La devise de base a le taux 1. Le taux de chaque autre devise indique combien d'unités de cette devise valent une unité de la devise de base. Avec l'INR comme devise de base, le taux de l'USD est d'environ 0,012 (une roupie vaut 0,012 dollar), et non 83. Un taux saisi à l'envers multiplie les prix convertis par des milliers.

Lors de la construction d'une page, le plugin calcule montant × taux pour la devise du visiteur, en ajoutant au taux la valeur du champ intérêt (interest) placé à côté. Les montants dans la devise de base elle-même sont affichés tels qu'ils sont écrits, sans aucun calcul. Avec l'INR comme devise de base et [wpcs_price value=8300] sur une page :

Devise du visiteurTauxAffiché
INR (base)18,300.00
USD0.01299.60
EUR0.01191.30

Les symboles, les décimales et les séparateurs proviennent de la ligne de chaque devise ; l'arithmétique, elle, est toujours la même.

Saisissez chaque prix une seule fois, dans la devise de base

[wpcs_price value=200] n'a aucun attribut pour une devise : la valeur est toujours lue comme un montant dans la devise de base. Il en va de même pour les montants lus dans des champs personnalisés avec meta_value et pour les montants convertis en PHP avec $WPCS->wpcs_exchange_value(). Vous fixez chaque prix une fois ; lorsque les taux sont mis à jour, tous les prix convertis suivent, sans rien ressaisir.

Choisissez donc comme devise de base celle dans laquelle vous raisonnez et facturez. Si votre liste de prix est en roupies, la devise de base est l'INR et toutes les valeurs sont en roupies, même si la plupart des visiteurs verront des dollars.

Prix rédigés dans une autre devise

Il n'existe aucun moyen d'indiquer à [wpcs_price] qu'un montant précis est en euros alors que la devise de base est le dollar américain. [wpcs_price value=250 EUR] est lu comme 250 dans la devise de base, et le EUR est ignoré. Trois façons de traiter ces prix :

  • Votre propre montant pour chaque devise. Si le prix doit être exactement de 250 euros, 270 dollars et 215 livres, utilisez [wpcs_price type=fixed value=EUR:250,USD:270,GBP:215]. Rien n'est converti, mais chaque devise du site doit avoir un montant ; voir les prix fixes par devise.
  • Convertissez vous-même le montant dans la devise de base et saisissez ce nombre. C'est simple, mais le montant en devise de base ne suit pas les variations ultérieures du taux de la devise d'origine.
  • Laissez un petit shortcode faire la conversion à chaque affichage de page, avec les taux du moment.

Le shortcode ci-dessous prend un montant dans n'importe quelle devise de votre liste, le convertit dans la devise de base avec $WPCS->back_convert() (montant divisé par le taux) et transmet le résultat à [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 . ']');
});

Les visiteurs qui ont sélectionné l'EUR voient exactement 250 euros ; tous les autres, y compris les visiteurs dans la devise de base, voient 250 euros convertis aux taux actuels. Le résultat est un prix [wpcs_price] ordinaire : il est donc aussi redessiné correctement sur les sites où J'utilise un plugin de cache sur mon site (I am using cache plugin on my site) est activé.

Changer la devise de base

Cliquez sur le bouton radio d'une autre devise dans l'onglet Devises (Currencies). Le plugin enregistre aussitôt la nouvelle devise de base, demande à l'agrégateur sélectionné dans l'onglet Options les taux de toutes les autres devises par rapport à elle, et les place dans les champs de taux. Vérifiez-les et cliquez immédiatement sur Enregistrer les options (Save options) : tant que vous n'avez pas enregistré, le site utilise la nouvelle devise de base avec les anciens taux.

Si un champ de taux affiche une erreur au lieu d'un nombre, l'agrégateur n'a pas pu le fournir ; les offres gratuites de certains services de taux n'acceptent qu'une seule devise de base. Les erreurs de taux de change expliquent les messages, et les taux peuvent toujours être définis manuellement.

Ce qui ne change pas, ce sont vos prix. Chaque value=200 écrit lorsque la devise de base était l'USD signifie désormais 200 dans la nouvelle devise de base. Décidez de la devise de base avant de saisir vos prix ; si vous la changez plus tard, modifiez chaque prix converti (une recherche de wpcs_price dans les listes Articles (Posts) et Pages les retrouve dans le contenu). Les prix fixes avec type=fixed, les règles GeoIP et la devise de bienvenue ne sont pas touchés.

Devise de base, devise de bienvenue et devise courante

Ces trois devises sont indépendantes, et seule la première concerne la façon dont vous saisissez les prix :

DeviseCe qu'elle détermineOù la définirEn PHP
De baseLa devise de chaque montant que vous écrivezBouton radio de l'onglet Devises (Currencies)$WPCS->default_currency
De bienvenueCe que voit un visiteur lors de sa première visite quand aucune règle GeoIP ne correspondDevise de bienvenue (Welcome currency) dans l'onglet Options$WPCS->get_welcome_currency()
CouranteCe que voit ce visiteur à présentLe choix du visiteur dans le sélecteur, les règles GeoIP ou la devise de bienvenue$WPCS->current_currency

Vos prix peuvent être en INR tandis que les nouveaux visiteurs démarrent en USD : définissez l'INR comme devise de base et l'USD comme devise de bienvenue. Le choix de la première devise selon le pays est traité dans définir la devise selon le pays du visiteur. Dans votre propre code, lisez la devise de base avec $WPCS->default_currency ; les taux proviennent de $WPCS->get_currencies() et, côté public du site, ils incluent déjà l'intérêt.

Liste de contrôle

  • Le bouton radio est sur la devise dans laquelle vos prix sont rédigés, et son taux est 1.
  • Chaque autre taux est « unités de cette devise pour une unité de la devise de base », et non l'inverse.
  • Chaque value et chaque champ de prix contient un nombre simple, dans la devise de base.
  • Les prix qui doivent être exacts dans une autre devise utilisent type=fixed ou le shortcode [price_from].
  • Après un changement de devise de base : taux vérifiés, Enregistrer les options (Save options) pressé, prix convertis ressaisis.

Si les montants ne concordent toujours pas, ouvrez un sujet sur le forum d'assistance WPCS en indiquant votre devise de base, les taux de l'onglet Devises (Currencies) et le shortcode que vous utilisez.