Um nun diesen Container nur für deutschsprachige User sichtbar zu machen wird die Erweiterung Dynamic Content for Elementor verwendet. Im Unterschied zur kostenlosen Version kann man in der Pro-Version Custom Conditions erstellen.
Bei aktivem Container wird zuerst die Option Visibility auf ON gesetzt, der Display Mode wird auf Show gestellt. Nun stehen eine Reihe von Triggern zur Verfügung:
- Basierend auf Datum und Uhrzeit:
- Anzeige nur wenn User eingeloggt ist;
- Anzeige nur, wenn der User eine bestimmte Rolle hat;
- Anzeige nur bei bestimmter IP;
- Anzeige nur bei einem bestimmten Browser;
- Kontext: CPT, Seite, Beitrag, Term, Meta;
- Konditionale Logik: Conditional Tags für Beiträge, Conditional Tags für Seiten und Archive.
Das ist alles wunderbar, aber in diesem Anwendungsfall nicht ausreichend. Was man hier benötigt ist eine Custom Condition.
$lang = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang = substr($lang, 0, 2);
if ($lang =='de') { return true; };
In der ersten Zeile wird die Browsersprache ermittelt. Da von manchen Sprachen mehrere Versionen gibt (de_DE, de_CH, de_AT, …) aber die alle deutsch sind, werden nur die ersten beiden Zeichen zum Vergleich herangezogen, ob diese eben de lauten. Wenn ja, wird wahr zurückgegeben.
Damit ist die Überprüfung auch schon abgeschlossen. Nun kann man überprüfen, ob das auch funktioniert:
Die Sprache des Browsers läßt sich übrigens leicht ändern. Der Screenshot zeigt Google Chrome, aber auch in Firefox ist das über die Einstellungen möglich. Safari und Co gehen ev. den Umweg über die Systemeinstellungen.
2 comments
Michael Baierl - Website Heroes
Lieber Harry,
wie immer eine super Anleitung.
Eine Anmerkung von meiner Seite: wenn man das ganze wie von dir vorgeschlagen umsetzt, dann sollte man das Caching (WP Rocket, Nitropack, W3 Total Cache oder ähnliches) für diese Seite deaktivieren… sonst wird es (leider) nicht funkionieren.
lg
Michael
Harry Martin
Ausprobieren, im Falle des Falles lässt sich das Caching sicher auch für die eine Seite rausnehmen. Und während der Entwicklung wird man Caching ohnehin deaktivieren.