WooCommerce: Anzeigewährung abweichend von der Basiswährung festlegen
Eine WooCommerce-Anzeigewährung, die von der Basiswährung abweicht, ist ein häufiger Wunsch: Sie geben die Preise in US-Dollar ein, weil Sie Ihre Lieferanten in dieser Währung bezahlen, Ihre Kunden sollen aber türkische Lira sehen – oder ein Shop in der Eurozone soll neue Besucher in Dollar begrüßen. FOX deckt beide Fälle ab. Die Willkommenswährung (Welcome currency) bestimmt, was ein neuer Besucher als Erstes sieht, und ein kurzes Snippet sperrt den gesamten Shop auf eine einzige Währung. Diese Anleitung erklärt den Unterschied zwischen Basis- und Willkommenswährung, warum die Willkommenswährung manchmal ignoriert zu werden scheint und wie Sie einen Shop einrichten, der nur eine Fremdwährung anzeigt.
Basiswährung und Willkommenswährung sind verschiedene Einstellungen
Die Basiswährung ist die Währung, die im Tab Währungen (Currencies) unter WooCommerce → Einstellungen → Währung (Currency) als Basis (Basic) markiert ist. Beim Speichern schreibt FOX sie in die WooCommerce-Shopwährung. Jeder Betrag, den Sie eingeben, gilt in dieser Währung: Produktpreise, Gutscheinbeträge, Versandkosten, Mindestbeträge für kostenlosen Versand. Alle anderen Währungen werden mit ihrem Kurs (Rate) daraus umgerechnet.
Die Willkommenswährung im Tab Optionen (Options) ist lediglich die Währung, mit der ein neuer Besucher startet. Sie ändert keine Preisdaten und kann daher jederzeit umgestellt werden.
Anders verhält es sich mit einem Wechsel der Basiswährung. FOX rechnet Ihre Produktpreise nicht um, wenn Sie eine andere Währung als Basis (Basic) markieren: Ein Produkt, das 100 Dollar gekostet hat, kostet danach 100 Lira. Die erste Entscheidung lautet also, in welcher Währung Sie Preise eingeben wollen:
| Ihre Situation | Einrichtung |
|---|---|
| Sie kalkulieren in der Währung, in der Sie verkaufen, und nur in einer | Machen Sie sie zur WooCommerce-Shopwährung und geben Sie die Preise darin ein. Eine Umrechnung ist nicht nötig. |
| Sie kalkulieren in einer Währung und wollen eine andere anzeigen, umgerechnet zum aktuellen Kurs | Lassen Sie die Kalkulationswährung als Basis (Basic) stehen, fügen Sie die Anzeigewährung mit ihrem Kurs hinzu und nutzen Sie die Willkommenswährung oder die Sperre weiter unten. |
| Neue Besucher sollen in einer anderen Währung starten, dürfen aber wechseln | Nur die Willkommenswährung. |
Neuen Besuchern eine andere Währung als die Basiswährung zeigen
Wählen Sie die Währung unter Willkommenswährung (Welcome currency) im Tab Optionen (Options) aus und speichern Sie. Ein Besucher, für den noch keine Währung gespeichert ist, erhält sie beim ersten Seitenaufruf und behält danach, was er im Switcher auswählt. Wählen Sie eine Währung, deren Schalter Sichtbar (Visible) im Tab Währungen (Currencies) aktiviert ist; die Beschreibung der Option warnt vor einer ausgeblendeten Währung.
Wenn Sie zusätzlich GeoIP-Regeln einsetzen, haben diese Vorrang. FOX wendet die Willkommenswährung zu Beginn der ersten Anfrage an und die GeoIP-Regeln einen Moment später beim selben Seitenaufruf; ein Besucher, dessen Land in einer GeoIP-Liste steht, erhält also die Währung dieser Liste. Die Willkommenswährung ist damit faktisch die Währung für alle übrigen Besucher; Währung automatisch nach Land wechseln zeigt, wie beide zusammenspielen.
Warum die Willkommenswährung „nicht funktioniert“
Fast jede Meldung über eine ignorierte Willkommenswährung hat eine dieser Ursachen:
- Sie sind kein neuer Besucher. Die Willkommenswährung gilt nur einmal. Danach speichert FOX die Währung des Besuchers und verwendet sie auf jeder Seite; eine spätere Änderung der Willkommenswährung betrifft Besucher, die bereits eine Währung haben, nicht. Ihr eigener Browser hat von Ihren Tests eine gespeicherte Währung.
- Der Speicher erkennt Sie an der IP-Adresse. Ist Währungsspeicher (Currency storage) auf Transient, Memcached oder Redis gesetzt, zählen alle Browser und Geräte an Ihrem Anschluss als derselbe Besucher; ein privates Fenster oder ein zweites Smartphone im selben WLAN zeigt daher weiterhin die gespeicherte Währung. Testen Sie von einem anderen Anschluss aus, etwa über mobile Daten. Bei PHP-Sitzung (PHP Session) oder FOX-Sitzung (FOX Session) genügt ein neues privates Fenster.
- Eine GeoIP-Regel erfasst Ihr Land, wie oben beschrieben.
- Die Seite stammt aus einem Seiten-Cache, der für einen Besucher mit einer anderen Währung aufgebaut wurde. Aktivieren Sie Ich verwende ein Cache-Plugin auf meiner Website (I am using cache plugin on my site) im Tab Optionen (Options) und leeren Sie den Cache; Warum sich ein Währungsumschalter und ein Seiten-Cache gegenseitig stören erklärt den Rest.
Um zu sehen, was FOX für Sie verwendet, setzen Sie [woocs_show_current_currency] auf eine nicht gecachte Entwurfsseite.
Den Shop auf eine Anzeigewährung festlegen
Die Willkommenswährung kann Besucher nicht am Wechseln hindern, und Besucher, die einmal eine andere Währung gewählt haben, behalten sie. So zeigen Sie jedem Besucher auf jeder Seite eine einzige Währung, die nicht die Basiswährung ist:
- Lassen Sie die Währung, in der Sie kalkulieren, als Basis (Basic) stehen und fügen Sie die Anzeigewährung im Tab Währungen (Currencies) hinzu, mit einem aktuellen Kurs oder mit Kurs automatisch aktualisieren (Rate auto update) im Tab Optionen (Options).
- Setzen Sie Willkommenswährung (Welcome currency) auf die Anzeigewährung.
- Klicken Sie im Tab GeoIP für jede Währung auf Alle löschen (Clear all), damit keine Regel eine andere Währung auswählt.
- Entfernen Sie jeden Switcher: den Shortcode
[woocs], das Widget, Menüeinträge und den seitlichen Switcher im Tab Seitlich (Side). Sie können außerdem Sichtbar (Visible) für die Basiswährung ausschalten, damit sie nirgendwo erscheint. - Fügen Sie das folgende Snippet mit Ihrem Währungscode hinzu.
/*
* FOX: every visitor sees and uses one currency, on every page.
* Child theme functions.php or a code snippets plugin.
*/
add_action('wp_head', function () {
global $WOOCS;
if (!empty($WOOCS)) {
$WOOCS->set_currency('TRY'); // the display currency code from the Currencies tab
}
}, 1000);
$WOOCS->set_currency() macht die Währung zur aktuellen und speichert sie für den Besucher, sodass auch die nachfolgenden AJAX-Anfragen, etwa der Mini-Warenkorb und die Checkout-Aktualisierungen, sie verwenden. Der Code muss eine Ihrer Währungen sein; bei einem Code, der nicht in der Liste steht, fällt FOX auf die Basiswährung zurück. Die Priorität 1000 führt den Code nach der eigenen Arbeit von FOX in wp_head aus, wo die GeoIP-Regeln angewendet werden, sodass schon der allererste Seitenaufruf stimmt. Viele ältere Snippets verwenden die Standardpriorität und können diese erste Seite an eine GeoIP-Regel verlieren.
Das Snippet läuft, wenn WordPress eine Seite aufbaut, nicht wenn ein Seiten-Cache gespeichertes HTML ausliefert. Deshalb sind die Schritte 2 und 3 wichtig: Mit der Willkommenswährung auf der Anzeigewährung und ohne GeoIP-Regeln erhält ein neuer Besucher auf jedem Weg durch FOX die Anzeigewährung, einschließlich des Neuzeichnens der Preise auf gecachten Seiten. Ein wiederkehrender Besucher, der vor Einführung der Sperre eine andere Währung gewählt hat, kann diese auf gecachten Seiten weiterhin sehen, bis er eine Seite aufruft, die nie gecacht wird, etwa den Warenkorb oder den Checkout. Dort läuft das Snippet, sodass der Checkout immer die gesperrte Währung zeigt.
In welcher Währung der Kunde bezahlt
Die Sperre bestimmt, was Kunden sehen. In welcher Währung abgerechnet wird, hängt von Mehrere Währungen erlaubt (Is multiple allowed) im Tab Erweitert (Advanced) ab. Bei Ja (Yes) bleiben Checkout, Bestellung und Zahlung in der Anzeigewährung, Ihr Zahlungsanbieter muss sie also akzeptieren. Bei Nein (No) berechnet FOX die Bestellübersicht und die Bestellung in der Basiswährung neu, und die Sperre würde eine Bestellübersicht in Basiswährung mit Preisen in der Anzeigewährung umgeben; beginnen Sie die Funktion in diesem Fall mit if (is_checkout()) { return; }, damit der Checkout durchgängig die Basiswährung zeigt. Preise in lokaler Währung anzeigen, in Basiswährung abrechnen erklärt, wie Sie Kunden darüber informieren.
Eingegebene Beträge, Kurse und Bestellungen
- Gutscheinbeträge und Mindestbestellwerte, Versandkosten und Mindestbeträge für kostenlosen Versand werden in der Basiswährung eingegeben und zum aktuellen Kurs umgerechnet. Wer in einen Dollar-Shop einen Lira-Betrag eingibt, macht aus einer Schwelle von 1.000 Lira eine Schwelle von 1.000 Dollar. Um exakte Beträge in der Anzeigewährung festzulegen, aktivieren Sie Individueller Festbetrag für Gutscheine (Individual fixed amount for coupon) und Individueller Festbetrag für den Versand (Individual fixed amount for shipping) im Tab Erweitert (Advanced) (beide setzen Mehrere Währungen erlaubt (Is multiple allowed) = Ja (Yes) voraus); der Gutschein-Bildschirm und die Einstellungen der Versandarten Pauschalpreis (Flat rate) und Kostenloser Versand (Free shipping) erhalten dann ein Feld pro Währung.
- Produktpreise folgen dem Kurs. Jede Kursaktualisierung verschiebt die angezeigten Preise. Für runde Preise lesen Sie umgerechnete Preise runden; für exakte Preise in der Anzeigewährung fügt Individuelle Festpreisregeln für jedes Produkt (Individual fixed prices rules for each product) jedem Produkt ein Preisfeld pro Währung hinzu.
- Bestellungen und E-Mails zeigen die Währung, in der die Bestellung aufgegeben wurde. WooCommerce-Berichte rechnen nicht zwischen Währungen um; siehe Analytics bei mehreren Währungen.
Um den Basispreis neben dem Anzeigepreis zu zeigen, etwa aus Transparenz gegenüber ausländischen Kunden, fügt Preisinfo-Symbol anzeigen (Show price info icon) im Tab Optionen (Options) neben dem Preis ein Symbol hinzu, das ihn beim Überfahren mit der Maus in allen Ihren Währungen auflistet; So zeigen Sie zwei Währungen auf Produktseiten an zeigt eine Alternative per Code.
Checkliste
- Die Kalkulationswährung ist Basis (Basic); Sie wissen, dass sich Produktpreise beim Wechsel der Basiswährung nicht umrechnen.
- Die Willkommenswährung ist die, die neue Besucher sehen sollen, und sie ist sichtbar.
- Die GeoIP-Listen sind leer, oder Sie akzeptieren, dass die aufgeführten Länder ihre eigene Währung erhalten.
- Für einen gesperrten Shop: keine Switcher, das Snippet mit Priorität 1000 und die Willkommenswährung gleich der gesperrten Währung.
- Mehrere Währungen erlaubt (Is multiple allowed) passt zu der Währung, in der Sie tatsächlich abrechnen können.
- Getestet als neuer Besucher, auf einer nicht gecachten Seite, von einem Anschluss, der den Shop noch nicht besucht hat.
Sieht ein neuer Besucher bei deaktivierten Caches weiterhin die falsche Währung, eröffnen Sie ein Thema im FOX-Support-Forum mit Ihren Einstellungen unter Währungen (Currencies), Optionen (Options) und GeoIP sowie dem Code, den Sie verwenden, und wir sehen es uns an.