WPCS - WordPress Currency Switcher Professional

Sélecteur de devises : erreur « no data for » et taux de change

Lorsque le sélecteur de devises affiche no data for une devise (no data for EUR, no data for CAD) après un clic sur Mettre à jour tous les taux (Update all rates), le plugin ne fait que relayer la réponse du service de taux de change interrogé. Le service n'avait pas de taux pour cette paire, a refusé la requête, ou n'a jamais répondu. Il en va de même pour les autres messages qui peuvent apparaître dans les champs de taux. Voici d'où WPCS tire ses taux, ce que signifie chaque message, pourquoi les prix peuvent tomber à 0 après une mise à jour, et comment garder les mises à jour automatiques dans les limites de votre quota d'API.

D'où viennent les taux de change

Les taux sont récupérés auprès du service sélectionné dans Réglages (Settings) → Currency Switcher → Options → Agrégateur de devises (Currency aggregator). La devise de base est celle dont le bouton radio est sélectionné dans l'onglet Devises (Currencies) : elle a le taux 1, et chaque requête demande au service le taux de la devise de base vers une autre devise. Une mise à jour envoie une requête par devise autre que la devise de base.

AgrégateurNécessite une clé dans Clé API de l'agrégateur (Aggregator API key)
Currencyapi, Open exchange rates, Currencylayer, FixerOui
finance.yahoo.com, CryptoCompareNon
La Banque centrale européenne (www.ecb.europa.eu), PrivatBank et les banques nationales d'Ukraine, de Pologne, de Moldavie, de Roumanie, de Hongrie et de RussieNon ; chacune publie une liste fixe de devises par rapport à sa propre monnaie

Les taux sont mis à jour de trois façons : le bouton Mettre à jour tous les taux (Update all rates) au-dessus de la liste des devises, le petit bouton de mise à jour à côté de chaque champ de taux, et l'option Mise à jour automatique des taux (Rate auto update), qui s'exécute via WP-Cron. Les deux boutons ne font que remplir les champs taux (rate) ; rien n'est enregistré tant que vous n'avez pas cliqué sur Enregistrer les options (Save options).

Ce que signifie chaque message de taux

Lorsque le service ne renvoie pas de nombre, le plugin écrit son message dans le champ taux (rate) à la place :

Message dans le champ de tauxSignification
no data for XXXLa réponse ne contenait aucun taux pour XXX : le code n'est pas un code de devise valide, la source ne publie pas cette devise, ou aucune réponse exploitable n'est arrivée
There is no data for these currencies: USD/XXXLa même chose, depuis finance.yahoo.com
Invalid API key or no data for these currencies: USD/XXXCurrencyapi a rejeté la clé ou n'a pas cette paire
This aggregator requires a license codeL'agrégateur sélectionné exige une clé et Clé API de l'agrégateur (Aggregator API key) est vide
Aggregator Error: suivi d'un texteLe service a refusé la requête ; le texte après les deux-points est sa propre explication

Le sélecteur de devises affiche « no data for » une devise : vérifiez le code, la source et la connexion

  1. Le code de la devise. Les taux sont demandés d'après le code figurant dans le champ de nom de la devise : ce doit donc être le code ISO 4217 à trois lettres, EUR et non Euro ou €. La FAQ pourquoi la mise à jour automatique des taux ne fonctionne pas renvoie vers la liste des codes valides.
  2. La couverture de la source. La Banque centrale européenne publie une trentaine de devises par rapport à l'euro, et chaque banque nationale publie sa propre liste par rapport à sa propre monnaie. Une devise absente de cette liste renvoie toujours no data, quelle que soit la devise de base. Les cryptomonnaies telles que BTC exigent CryptoCompare, une source conçue pour elles.
  3. La connexion. Le plugin ne peut pas distinguer une réponse vide d'une absence de réponse. Si toutes les devises échouent, essayez un autre agrégateur et cliquez sur Mettre à jour tous les taux (Update all rates). Si toutes les sources échouent pour toutes les devises, votre serveur ne peut pas joindre les services externes : un pare-feu qui bloque les requêtes sortantes, un problème de DNS ou de SSL, ou une panne temporaire. L'écran Santé du site (Site Health) sous Outils (Tools) signale quand WordPress ne peut pas joindre WordPress.org, signe que les requêtes sortantes sont bloquées ; l'hébergeur peut les rouvrir.

Dans la plupart des cas, la solution la plus rapide est un autre agrégateur. Nous recommandons généralement Currencyapi : créez une clé gratuite sur son site, sélectionnez-le dans Agrégateur de devises (Currency aggregator), collez la clé dans Clé API de l'agrégateur (Aggregator API key), cliquez sur Enregistrer les options (Save options), puis sur Mettre à jour tous les taux (Update all rates) et à nouveau sur Enregistrer les options (Save options).

« This aggregator requires a license code » et « Aggregator Error »

Currencyapi, Open exchange rates, Currencylayer et Fixer ne fonctionnent qu'avec une clé provenant de leur propre site, saisie dans Clé API de l'agrégateur (Aggregator API key). Le champ contient une seule clé, qui doit donc appartenir à l'agrégateur actuellement sélectionné ; une clé Fixer ne fonctionne pas avec Currencyapi.

Avec une clé, le service peut encore refuser, et la raison suit Aggregator Error:. Les trois motifs habituels :

  • Clé invalide. Copiez-la à nouveau depuis le tableau de bord du service, sans espaces.
  • L'offre n'autorise pas votre devise de base. Les offres gratuites de plusieurs services fonctionnent avec une seule devise de base : celle de Fixer avec l'EUR, celles d'Open Exchange Rates et de Currencylayer avec l'USD. Si votre devise de base est différente, chaque requête échoue. Vérifiez les conditions actuelles de votre offre, ou choisissez un agrégateur dont l'offre accepte votre devise de base.
  • Le quota mensuel est épuisé. Voir la dernière section.

Les prix sont passés à 0 après la mise à jour des taux

Cela se produit lorsqu'un message d'erreur se trouvait dans un champ taux (rate) et que les réglages ont été enregistrés. Le champ est stocké sous forme de nombre : un message devient 0, et chaque prix dans cette devise se convertit en 0. Les taux ne sont pas stockés tant que vous n'enregistrez pas, donc :

  • Si vous n'avez pas encore enregistré, rechargez la page de réglages sans enregistrer et les taux précédents reviennent.
  • Si vous avez déjà enregistré, saisissez le bon taux dans chaque champ concerné, ou corrigez l'agrégateur et mettez à jour à nouveau, puis enregistrez.
  • L'alerte Request error! Try later or another agregator! signifie que la réponse à la requête de mise à jour n'a pas pu être lue, généralement parce qu'un avertissement ou une erreur PHP y a été affiché. Aucun taux n'a été modifié ; réessayez ou changez d'agrégateur, et si cela se répète, consultez le journal d'erreurs PHP.

Les mises à jour automatiques n'enregistrent jamais 0 : quand la source ne renvoie rien pour une devise, la tâche cron conserve son taux précédent.

Devises rares ou obsolètes : définir le taux à la main

Si aucun agrégateur n'a de données pour une devise, saisissez son taux (unités de cette devise pour une unité de la devise de base) dans le champ taux (rate) et enregistrez. Les mises à jour automatiques laissent ce taux tranquille, car la source ne renvoie rien pour lui, mais elles écrasent les taux manuels des devises que la source connaît. Pour conserver vos propres taux pour toutes les devises, réglez Mise à jour automatique des taux (Rate auto update) sur no auto update. Le champ intérêt (interest) à côté du taux ajoute un montant fixe au taux sur le site, et définir les taux de change dans le code couvre des règles comme l'ajout d'un pourcentage.

Taux qui ne se mettent pas à jour automatiquement, ou requêtes API qui s'épuisent

Mise à jour automatique des taux (Rate auto update) propose hourly, twicedaily (par défaut), daily, weekly et monthly. Chaque exécution envoie une requête par devise autre que la devise de base. Avec neuf devises supplémentaires, cela représente environ 540 requêtes par mois avec twicedaily, 270 avec daily et moins de 40 avec weekly, plus neuf pour chaque clic sur Mettre à jour tous les taux (Update all rates). Quand les requêtes s'épuisent plus vite, vérifiez deux points :

  • Une ancienne planification est toujours active. Le plugin crée son événement WP-Cron (wpcs_currencies_rate_auto_update) une seule fois, avec l'intervalle sélectionné à ce moment-là, et ne le recrée pas quand vous modifiez l'option. Après un passage de hourly à weekly, l'événement continue de s'exécuter toutes les heures. Supprimez-le, et le plugin en crée un nouveau avec l'intervalle actuel au prochain chargement de page. Avec WP-CLI :
    wp cron event delete wpcs_currencies_rate_auto_update
    Un plugin de gestion du cron peut supprimer le même événement depuis l'administration de WordPress.
  • Une autre copie du site utilise la même clé. Un site de préproduction ou un clone exécute son propre WP-Cron et dépense le même quota. Donnez-lui sa propre clé, ou réglez sa Mise à jour automatique des taux (Rate auto update) sur no auto update.

Si les taux ne se mettent jamais à jour d'eux-mêmes, WP-Cron ne s'exécute pas. Il ne démarre que lorsque quelqu'un visite le site : sur un site peu fréquenté, les mises à jour arrivent donc tard. Lorsque DISABLE_WP_CRON est défini dans wp-config.php, une tâche du serveur doit appeler wp-cron.php, comme décrit dans Hooking WP-Cron into the system task scheduler.

Liste de contrôle

  • Chaque devise utilise son code ISO 4217, et la devise de base a le taux 1.
  • L'agrégateur sélectionné publie toutes vos devises, et son offre accepte votre devise de base.
  • Les agrégateurs à clé ont leur propre clé dans Clé API de l'agrégateur (Aggregator API key).
  • Après Mettre à jour tous les taux (Update all rates), chaque champ affiche un nombre avant que vous ne cliquiez sur Enregistrer les options (Save options).
  • L'intervalle de mise à jour automatique correspond à votre quota, et aucune ancienne planification ni copie de préproduction ne le consomme.
  • Après la modification des taux, le cache de page est vidé afin que les visiteurs obtiennent les nouveaux prix.

Si les taux ne se chargent toujours pas, ouvrez un sujet sur le forum d'assistance WPCS en indiquant l'agrégateur utilisé, votre devise de base et le message exact du champ de taux.