WPCS - WordPress Currency Switcher Professional

Währung nach Land des Besuchers in WordPress festlegen – GeoIP-Regeln

Um in WordPress die Währung nach dem Land des Besuchers festzulegen, nutzt WPCS – WordPress Currency Switcher GeoIP-Regeln: Sie weisen jeder Währung Länder zu, und ein neuer Besucher sieht die Preise in der Währung seines Landes, ohne den Umschalter zu berühren. Die Einrichtung dauert ein paar Minuten. Viele Website-Betreiber überrascht, wann die Regeln gelten: nur beim ersten Besuch und nie gegen eine Währung, die der Besucher selbst gewählt hat. Nachfolgend finden Sie die Einrichtung, die Willkommenswährung, die beiden Geolokalisierungs-Bibliotheken, wie Sie die Funktion abschalten oder erweitern und was Suchmaschinen sehen.

So wird die Währung nach dem Land gewählt

Beim ersten Seitenaufruf eines Besuchers tut das Plugin vier Dinge:

  1. Es setzt die Willkommenswährung (Welcome currency) als Währung des Besuchers.
  2. Es ermittelt das Land des Besuchers anhand seiner IP-Adresse, mit der unter Geo-Position (Geo position) gewählten Bibliothek.
  3. Es geht Ihre Währungen der Reihe nach durch und nimmt die erste, deren GeoIP-Regel dieses Land enthält.
  4. Es speichert das Ergebnis im Währungsspeicher (Currency storage) des Besuchers.

Bei jedem weiteren Seitenaufruf verwendet das Plugin die gespeicherte Währung und prüft die Regeln nicht erneut. Eine Währung, die der Besucher im Umschalter wählt, ersetzt die gespeicherte und bleibt bestehen. Beim allerersten Seitenaufruf hat eine passende Regel außerdem Vorrang vor einer Währung im Link: Ein Besucher aus dem Vereinigten Königreich, der über ?currency=EUR kommt, erhält trotzdem die Währung der Regel für das Vereinigte Königreich.

„Erster Besuch“ bedeutet, dass der Speicher noch keinen Eintrag zum Besucher hat. Beim Standardspeicher transient gehört der Eintrag zur IP-Adresse und läuft einen Tag nach dem letzten Seitenaufruf ab; bei cookie gilt er einen Tag ab dem ersten Besuch; bei session endet er mit der PHP-Sitzung. Läuft der Eintrag ab, ist der nächste Seitenaufruf wieder ein erster Besuch, und die Regeln greifen noch einmal.

GeoIP wählt nur die Währung. Preise müssen weiterhin mit [wpcs_price] ausgegeben werden, damit sie umgerechnet werden; falls das noch nicht eingerichtet ist, beginnen Sie mit So zeigen Sie in WordPress Preise in mehreren Währungen an.

GeoIP-Regeln einrichten

  1. Öffnen Sie Einstellungen (Settings) → Currency Switcher. Fügen Sie auf dem Tab Währungen (Currencies) jede Währung hinzu, die angezeigt werden soll, und stellen Sie sicher, dass jede einen Kurs hat (siehe So fügen Sie eine neue Währung hinzu).
  2. Öffnen Sie den Tab GeoIP-Regeln (GeoIP rules). Jede Währung hat ein eigenes Feld, Land auswählen... (Choose a country...). Klicken Sie darauf, tippen Sie einen Ländernamen ein und wählen Sie ihn aus. Fügen Sie so viele Länder hinzu, wie Sie brauchen.
  3. Klicken Sie auf Optionen speichern (Save options).

Drei Faustregeln:

  • Nur Länder. Für Regionen oder Kontinente gibt es keine Einträge. Um der gesamten Eurozone Euro anzuzeigen, fügen Sie jedes Euro-Land zur EUR-Regel hinzu; um Dollar in ganz Amerika anzuzeigen, fügen Sie jedes Land Amerikas zur USD-Regel hinzu.
  • Eine Regel pro Land. Steht ein Land in zwei Regeln, gewinnt die Währung weiter oben in der Liste.
  • Den Rest leer lassen. Länder, die in keiner Regel stehen, erhalten die Willkommenswährung, Sie müssen also nicht die ganze Welt auflisten.

Ein Beispiel für eine Website mit der Basiswährung USD:

WährungLänder in ihrer Regel
EURDeutschland, Frankreich, Italien, Spanien, die Niederlande und die übrigen Euro-Länder
GBPVereinigtes Königreich
CADKanada
USDKeine: Jedes andere Land erhält die Willkommenswährung USD

Am Ende des Tabs GeoIP-Regeln (GeoIP rules) steht das Land, das für Ihre eigene Verbindung erkannt wurde – eine schnelle Kontrolle, ob die Erkennung auf Ihrem Server funktioniert.

Willkommenswährung, Basiswährung und eine Währung für alle

Die beiden Einstellungen werden leicht verwechselt:

  • Die Basiswährung ist die mit dem ausgewählten Radiobutton auf dem Tab Währungen (Currencies). Ihr Kurs ist 1, und jeder Betrag in [wpcs_price] wird in ihr geschrieben. Sie bestimmt nicht, was Besucher sehen.
  • Die Willkommenswährung, eingestellt unter Willkommenswährung (Welcome currency) auf dem Tab Optionen (Options), ist die Währung, die ein Erstbesucher sieht, wenn keine GeoIP-Regel zu seinem Land passt. Prüfen Sie sie nach dem Hinzufügen von Währungen, denn sie kann jede Währung der Liste sein, nicht nur die Basiswährung.

Eine Website kann ihre Preise also in INR führen und Besucher trotzdem in USD begrüßen. Um dem Vereinigten Königreich GBP und allen anderen USD anzuzeigen, stellen Sie Willkommenswährung (Welcome currency) auf USD und fügen das Vereinigte Königreich zur GBP-Regel hinzu; mehr ist nicht nötig. Um allen eine einzige Währung anzuzeigen, leeren Sie alle GeoIP-Regeln und legen diese Währung als Willkommenswährung fest; sollen Besucher sie nicht ändern können, platzieren Sie keinen Umschalter auf der Website.

Eine Änderung der Willkommenswährung oder der Regeln wirkt sich auf neue Besucher aus. Besucher, die das Plugin bereits gespeichert hat, behalten ihre gespeicherte Währung, bis ihr Eintrag abläuft.

Die Geolokalisierungs-Bibliothek wählen

Die Option Geo-Position (Geo position) auf dem Tab Optionen (Options) bestimmt, wie das Land ermittelt wird:

  • Open Geo IP (Standard) verwendet die Länderdatenbank-Datei, die mit dem Plugin ausgeliefert wird. Es ist nichts einzurichten, aber die Datei ist nur so aktuell wie die Plugin-Version und verarbeitet ausschließlich IPv4-Adressen. Steht die Website hinter Cloudflare mit aktivierter IP-Geolokalisierung, übernimmt sie das Land stattdessen aus dem Cloudflare-Header CF-IPCountry.
  • GeoIP2 (MaxMind API key is required) verwendet die GeoLite2-Datenbank von MaxMind, die aktueller ist und auch IPv6 verarbeitet. Legen Sie bei MaxMind ein kostenloses GeoLite2-Konto an und erzeugen Sie einen Lizenzschlüssel. Wählen Sie GeoIP2, fügen Sie den Schlüssel in MaxMind-Lizenzschlüssel (MaxMind license key) ein, klicken Sie auf Optionen speichern (Save options) und dann auf Datenbank aktualisieren/herunterladen (Update/Download DB). Die Datei wird als wp-content/uploads/currency-switcher/GeoLite2-Country.mmdb gespeichert. Sie wird nicht automatisch aktualisiert, klicken Sie die Schaltfläche also alle paar Monate erneut. Solange die Datei nicht existiert, wird kein Land erkannt, und jeder Besucher erhält die Willkommenswährung.

Ist das erkannte Land falsch, leer oder für alle gleich, liegt die Ursache meist an der IP-Adresse, die Ihr Server an PHP übergibt. Das behandelt Die GeoIP-Währungserkennung funktioniert nicht.

GeoIP abschalten oder sein Verhalten ändern

Abschalten

Entfernen Sie auf dem Tab GeoIP-Regeln (GeoIP rules) alle Länder aus jeder Regel und klicken Sie auf Optionen speichern (Save options). Jeder neue Besucher startet dann mit der Willkommenswährung.

Regeln behalten, automatisches Umschalten stoppen

Der Filter wpcs_geo_position erhält den erkannten Ländercode, bevor die Regeln geprüft werden. Geben Sie einen leeren Wert zurück, und keine Regel greift mehr, während die Regeln in den Einstellungen gespeichert bleiben. Bearbeiten Sie dafür nicht die Plugin-Dateien: Änderungen dort gehen mit dem nächsten Update verloren.

/*
 * WPCS: keep the GeoIP rules saved but never switch the currency by country.
 * Child theme functions.php or a code snippets plugin.
 */
add_filter('wpcs_geo_position', '__return_empty_string');

Derselbe Filter kann das Land aus einer anderen Quelle liefern, zum Beispiel aus dem Cloudflare-Header, wenn Sie GeoIP2 verwenden; den passenden Code-Schnipsel enthält der oben genannte Artikel zur Fehlersuche.

Die Regeln bei jeder neuen Browser-Sitzung anwenden

Manchmal soll das Land bei jedem neuen Besuch gewinnen, nicht nur beim ersten, während eine im Umschalter gewählte Währung während des Besuchs weiter gilt. Dafür sind ein paar Zeilen Code nötig. Der Schnipsel unten behandelt jede Browser-Sitzung als ersten Besuch: Er wendet die Regeln – oder die Willkommenswährung für Länder ohne Regel – beim ersten Seitenaufruf nach dem Öffnen des Browsers erneut an.

/*
 * WPCS: apply the GeoIP rules at the start of every browser session.
 * A currency picked in the switcher still wins until the browser is closed.
 * Child theme functions.php or a code snippets plugin.
 */
add_action('template_redirect', function () {
    global $WPCS;
    if (empty($WPCS) || isset($_COOKIE['wpcs_geo_session'])) {
        return;
    }
    // A cookie without expiry date lives until the browser is closed.
    setcookie('wpcs_geo_session', '1', 0, COOKIEPATH, COOKIE_DOMAIN);

    if (isset($_GET['currency'])) {
        return; // the visitor arrived with a currency in the link
    }

    $country  = (string) $WPCS->storage->get_val('wpcs_user_country');
    $currency = $WPCS->get_currency_by_country($country);
    if (!$currency) {
        $currency = $WPCS->get_welcome_currency();
    }
    $WPCS->storage->set_val('wpcs_current_currency', $currency);
    $WPCS->current_currency = $currency;
});

Der Schnipsel läuft nur, wenn WordPress die Seite aufbaut. Aus einem Seiten-Cache ausgelieferte Seiten überspringen ihn; verwenden Sie ihn daher auf Websites ohne Full-Page-Caching oder nehmen Sie die Einstiegsseiten vom Cache aus.

Was Suchmaschinen sehen

Das Plugin behandelt Crawler nicht gesondert. Ein Suchmaschinen-Bot ist ein Besucher wie jeder andere: Bei seiner ersten Anfrage erhält er die Währung der GeoIP-Regel für sein Land oder die Willkommenswährung. Google crawlt überwiegend von Adressen in den Vereinigten Staaten; steht die USA also in einer Regel, werden Ihre Seiten mit dieser Währung indexiert, andernfalls mit der Willkommenswährung. Crawler in anderen Ländern durchlaufen dieselben Regeln. Jede Währung wird unter derselben URL angezeigt, daher wird jede Seite in einer Währung indexiert. Um zu steuern, in welcher, wählen Sie die Willkommenswährung und die Währung der USA-Regel im Hinblick auf die Suchergebnisse.

Prüfen, ob es funktioniert

Erstellen Sie eine Entwurfsseite mit drei Shortcodes:

[wpcs_check_country]
[wpcs_price value=100]
[wpcs]

[wpcs_check_country] gibt das Land aus, das die Bibliothek für den aktuellen Besucher erkennt, noch vor dem Filter wpcs_geo_position, und der Preis zeigt, welche Währung aktiv ist. Jeder Test muss ein echter erster Besuch sein: ein neues privates Fenster bei cookie- oder session-Speicher, eine andere Verbindung bei transient-Speicher. Eine Entwicklungskopie auf Ihrem eigenen Rechner, wo PHP die Loopback-Adresse sieht, meldet immer eine Testadresse in den Vereinigten Staaten. Verwendet die Website einen Seiten-Cache, stellen Sie Ich verwende ein Cache-Plugin auf meiner Website (I am using cache plugin on my site) auf dem Tab Optionen (Options) auf Ja (Yes) und leeren Sie den Cache, sonst wird die Seite eines Besuchers an alle ausgeliefert.

  • Die Regeln enthalten Länder, keine Regionen, und jedes Land steht in einer Regel.
  • Die Willkommenswährung ist die Währung für jedes Land ohne Regel.
  • Bei GeoIP2 ist der Schlüssel gespeichert und die Datenbankdatei wurde heruntergeladen.
  • Der Test war ein erster Besuch für den gewählten Währungsspeicher (Currency storage).

Zeigt die Testseite das richtige Land und die Währung folgt den Regeln trotzdem nicht, eröffnen Sie im WPCS-Support-Forum ein Thema mit einem Link zur Testseite und Ihren Einstellungen für Geo-Position (Geo position) und Währungsspeicher (Currency storage).