WPCS - WordPress Currency Switcher Professional

Währungsumschalter: Fehler „no data for“ bei Währungen – Wechselkurse beheben

Wenn der Währungsumschalter nach einem Klick auf Alle Kurse aktualisieren (Update all rates) no data for bei einer Währung anzeigt (no data for EUR, no data for CAD), gibt das Plugin die Antwort des Wechselkursdienstes weiter, den es gefragt hat. Der Dienst hatte keinen Kurs für dieses Paar, hat die Anfrage abgelehnt oder nie geantwortet. Dasselbe gilt für die anderen Meldungen, die in den Kursfeldern erscheinen können. Im Folgenden erfahren Sie, woher WPCS seine Wechselkurse bezieht, was jede Meldung bedeutet, warum Preise nach einer Aktualisierung auf 0 fallen können und wie Sie automatische Aktualisierungen innerhalb Ihrer API-Limits halten.

Woher die Wechselkurse kommen

Die Kurse werden von dem Dienst abgerufen, der unter Einstellungen → Currency Switcher → Optionen (Options) → Währungs-Aggregator (Currency aggregator) ausgewählt ist. Die Basiswährung ist die Währung, deren Radiobutton im Tab Währungen (Currencies) ausgewählt ist: Sie hat den Kurs 1, und jede Anfrage fragt den Dienst nach dem Kurs von der Basiswährung zu einer anderen Währung. Eine Aktualisierung sendet eine Anfrage pro Währung außer der Basiswährung.

AggregatorBraucht einen Schlüssel in API-Schlüssel des Aggregators (Aggregator API key)
Currencyapi, Open exchange rates, Currencylayer, FixerJa
finance.yahoo.com, CryptoCompareNein
Die Europäische Zentralbank (www.ecb.europa.eu), PrivatBank und die Nationalbanken der Ukraine, Polens, Moldaus, Rumäniens, Ungarns und RusslandsNein; jede veröffentlicht eine feste Liste von Währungen gegenüber ihrer eigenen Währung

Kurse werden auf drei Arten aktualisiert: mit der Schaltfläche Alle Kurse aktualisieren (Update all rates) über der Währungsliste, mit der kleinen Aktualisieren-Schaltfläche neben jedem Kursfeld und mit der Option Automatische Kursaktualisierung (Rate auto update), die über WP-Cron läuft. Die beiden Schaltflächen füllen nur die Felder Kurs (rate) aus; gespeichert wird nichts, bis Sie auf Optionen speichern (Save options) klicken.

Was die einzelnen Kursmeldungen bedeuten

Liefert der Dienst keine Zahl, schreibt das Plugin stattdessen seine Meldung in das Feld Kurs (rate):

Meldung im KursfeldBedeutung
no data for XXXDie Antwort enthielt keinen Kurs für XXX: Der Code ist kein gültiger Währungscode, die Quelle veröffentlicht diese Währung nicht, oder es kam überhaupt keine verwertbare Antwort an
There is no data for these currencies: USD/XXXDasselbe, von finance.yahoo.com
Invalid API key or no data for these currencies: USD/XXXCurrencyapi hat den Schlüssel abgelehnt oder kennt dieses Paar nicht
This aggregator requires a license codeDer ausgewählte Aggregator braucht einen Schlüssel, und API-Schlüssel des Aggregators (Aggregator API key) ist leer
Aggregator Error: gefolgt von TextDer Dienst hat die Anfrage abgelehnt; der Text nach dem Doppelpunkt ist seine eigene Erklärung

Währungsumschalter „no data for“ bei einer Währung: Code, Quelle und Verbindung prüfen

  1. Der Währungscode. Kurse werden über den Code im Namensfeld der Währung angefordert, er muss also der dreistellige ISO-4217-Code sein: EUR, nicht Euro oder €. Die FAQ Warum die automatische Kursaktualisierung nicht funktioniert verlinkt die Liste der gültigen Codes.
  2. Die Abdeckung der Quelle. Die Europäische Zentralbank veröffentlicht etwa 30 Währungen gegenüber dem Euro, und jede Nationalbank veröffentlicht ihre eigene Liste gegenüber ihrer eigenen Währung. Eine Währung, die in dieser Liste fehlt, liefert immer no data, egal welche Basiswährung gilt. Kryptowährungen wie BTC brauchen CryptoCompare, eine Quelle, die dafür gemacht ist.
  3. Die Verbindung. Das Plugin kann eine leere Antwort nicht von keiner Antwort unterscheiden. Schlägt jede Währung fehl, versuchen Sie einen anderen Aggregator und klicken Sie auf Alle Kurse aktualisieren (Update all rates). Schlägt jede Quelle für jede Währung fehl, erreicht Ihr Server keine externen Dienste: eine Firewall, die ausgehende Anfragen blockiert, ein DNS- oder SSL-Problem oder ein vorübergehender Ausfall. Der Bildschirm Website-Zustand (Site Health) unter Werkzeuge meldet, wenn WordPress WordPress.org nicht erreichen kann, ein Zeichen dafür, dass ausgehende Anfragen blockiert werden; der Hoster kann sie freigeben.

Am schnellsten hilft in den meisten Fällen ein anderer Aggregator. Wir empfehlen meist Currencyapi: Erstellen Sie auf der Website einen kostenlosen Schlüssel, wählen Sie ihn unter Währungs-Aggregator (Currency aggregator) aus, fügen Sie den Schlüssel in API-Schlüssel des Aggregators (Aggregator API key) ein, klicken Sie auf Optionen speichern (Save options), dann auf Alle Kurse aktualisieren (Update all rates) und erneut auf Optionen speichern (Save options).

„This aggregator requires a license code“ und „Aggregator Error“

Currencyapi, Open exchange rates, Currencylayer und Fixer funktionieren nur mit einem Schlüssel von ihrer eigenen Website, eingetragen in API-Schlüssel des Aggregators (Aggregator API key). Das Feld nimmt einen Schlüssel auf, er muss also zum aktuell ausgewählten Aggregator gehören; ein Fixer-Schlüssel funktioniert nicht mit Currencyapi.

Auch mit Schlüssel kann der Dienst die Anfrage ablehnen, und der Grund folgt auf Aggregator Error:. Die drei üblichen:

  • Ungültiger Schlüssel. Kopieren Sie ihn erneut aus dem Dashboard des Dienstes, ohne Leerzeichen.
  • Der Tarif erlaubt Ihre Basiswährung nicht. Die kostenlosen Tarife mehrerer Dienste funktionieren mit einer einzigen Basiswährung: bei Fixer mit EUR, bei Open Exchange Rates und Currencylayer mit USD. Ist Ihre Basiswährung eine andere, schlägt jede Anfrage fehl. Prüfen Sie die aktuellen Bedingungen Ihres Tarifs oder wählen Sie einen Aggregator, dessen Tarif Ihre Basiswährung akzeptiert.
  • Das Monatskontingent ist aufgebraucht. Siehe den letzten Abschnitt.

Preise wurden nach der Kursaktualisierung zu 0

Das passiert, wenn eine Fehlermeldung in einem Feld Kurs (rate) stand und die Einstellungen gespeichert wurden. Das Feld wird als Zahl gespeichert, eine Meldung wird zu 0, und jeder Preis in dieser Währung wird zu 0 umgerechnet. Kurse werden erst beim Speichern gespeichert, daher gilt:

  • Haben Sie noch nicht gespeichert, laden Sie die Einstellungsseite ohne Speichern neu, und die vorherigen Kurse kommen zurück.
  • Haben Sie bereits gespeichert, tippen Sie den richtigen Kurs in jedes betroffene Feld ein oder beheben Sie den Aggregator und aktualisieren Sie erneut, dann speichern Sie.
  • Die Warnung Request error! Try later or another agregator! bedeutet, dass die Antwort auf die Aktualisierungsanfrage nicht gelesen werden konnte, meist weil eine PHP-Warnung oder ein PHP-Fehler in sie geschrieben wurde. Es wurde kein Kurs geändert; versuchen Sie es erneut oder wechseln Sie den Aggregator, und wiederholt es sich, sehen Sie in das PHP-Fehlerprotokoll.

Automatische Aktualisierungen speichern nie 0: Liefert die Quelle für eine Währung nichts, behält der Cron-Job ihren vorherigen Kurs.

Seltene oder veraltete Währungen: den Kurs von Hand festlegen

Hat kein Aggregator Daten für eine Währung, tippen Sie ihren Kurs (Einheiten dieser Währung pro Einheit der Basiswährung) in das Feld Kurs (rate) ein und speichern Sie. Automatische Aktualisierungen lassen diesen Kurs in Ruhe, weil die Quelle dafür nichts liefert, überschreiben aber manuelle Kurse von Währungen, die die Quelle kennt. Um für jede Währung Ihre eigenen Kurse zu behalten, stellen Sie Automatische Kursaktualisierung (Rate auto update) auf no auto update. Das Feld Aufschlag (interest) neben dem Kurs addiert auf der Website einen festen Betrag auf den Kurs, und Wechselkurse im Code festlegen behandelt Regeln wie das Aufschlagen eines Prozentsatzes.

Kurse werden nicht automatisch aktualisiert, oder API-Anfragen gehen aus

Automatische Kursaktualisierung (Rate auto update) bietet hourly, twicedaily (der Standard), daily, weekly und monthly. Jeder Lauf sendet eine Anfrage pro Währung außer der Basiswährung. Bei neun zusätzlichen Währungen sind das etwa 540 Anfragen im Monat bei twicedaily, 270 bei daily und unter 40 bei weekly, dazu neun für jeden Klick auf Alle Kurse aktualisieren (Update all rates). Gehen die Anfragen schneller aus, prüfen Sie zwei Dinge:

  • Ein alter Zeitplan läuft noch. Das Plugin legt sein WP-Cron-Ereignis (wpcs_currencies_rate_auto_update) einmal an, mit dem Intervall, das in diesem Moment ausgewählt ist, und legt es nicht neu an, wenn Sie die Option ändern. Nach dem Wechsel von hourly auf weekly läuft das Ereignis weiter stündlich. Löschen Sie es, und das Plugin legt beim nächsten Seitenaufruf ein neues mit dem aktuellen Intervall an. Mit WP-CLI:
    wp cron event delete wpcs_currencies_rate_auto_update
    Ein Cron-Manager-Plugin kann dasselbe Ereignis im WordPress-Admin löschen.
  • Eine andere Kopie der Website verwendet denselben Schlüssel. Eine Staging-Website oder ein Klon führt sein eigenes WP-Cron aus und verbraucht dasselbe Kontingent. Geben Sie ihr einen eigenen Schlüssel oder stellen Sie ihre Automatische Kursaktualisierung (Rate auto update) auf no auto update.

Werden Kurse nie von selbst aktualisiert, läuft WP-Cron nicht. Es startet nur, wenn jemand die Website besucht, sodass Aktualisierungen auf einer ruhigen Website verspätet kommen. Ist DISABLE_WP_CRON in wp-config.php gesetzt, muss eine Server-Aufgabe wp-cron.php aufrufen, wie in Hooking WP-Cron into the system task scheduler beschrieben.

Checkliste

  • Jede Währung verwendet ihren ISO-4217-Code, und die Basiswährung hat den Kurs 1.
  • Der ausgewählte Aggregator veröffentlicht alle Ihre Währungen, und sein Tarif akzeptiert Ihre Basiswährung.
  • Aggregatoren mit Schlüssel haben ihren eigenen Schlüssel in API-Schlüssel des Aggregators (Aggregator API key).
  • Nach Alle Kurse aktualisieren (Update all rates) zeigt jedes Feld eine Zahl, bevor Sie auf Optionen speichern (Save options) klicken.
  • Das Intervall der automatischen Aktualisierung passt zu Ihrem Kontingent, und kein alter Zeitplan und keine Staging-Kopie verbraucht es.
  • Nach Änderungen an den Kursen ist der Seitencache geleert, damit Besucher die neuen Preise erhalten.

Werden die Kurse weiterhin nicht geladen, eröffnen Sie ein Thema im WPCS-Support-Forum mit dem verwendeten Aggregator, Ihrer Basiswährung und der genauen Meldung aus dem Kursfeld.