Geo-Inhalte nach Besucher-IP in WordPress anzeigen

Autorenname:Lisa Farrell·2026-06-01

WordPress-Websites müssen häufig in Beiträgen, Produktseiten oder Landingpages je nach Besucherregion unterschiedliche Inhalte anzeigen. Ein Shortcode kann Standardinhalt ausgeben und den Browser https://my.ipin.io/info aufrufen lassen.

Entwurfsziel

Bei „Geo-Inhalte nach Besucher-IP in WordPress anzeigen“ muss die Seite bereits vor Abschluss der IP-Anfrage nützlich sein. Das Geosignal ist nur eine Ergänzung: Es wird geprüft, auf eine klar begrenzte Entscheidung angewendet und bei unvollständigen Daten verworfen.

Anfrage- und Entscheidungsablauf

Geo-Inhalte nach Besucher-IP in WordPress anzeigen: Der folgende Ablauf wurde für dieses konkrete Thema entworfen und ist keine allgemeine IP-Checkliste.

  1. Schritt 1 — Standardzustand: shortcode fallback HTML
  2. Schritt 2 — Anfrage: wp_unique_id + static guard
  3. Schritt 3 — Validierung: 2.5s timeout
  4. Schritt 4 — Entscheidung: sessionStorage
  5. Schritt 5 — Fallback: ipin:geo-content

Produktionsnahes Beispiel

Geo-Inhalte nach Besucher-IP in WordPress anzeigen: Das Beispiel enthält Timeout, Antwortvalidierung, einen deterministischen Fallback und eine zum Framework passende Lebenszyklusbehandlung.

<?php
function ipin_geo_content_shortcode(): string {
    $id = wp_unique_id('ipin-geo-');
    $default = 'Support is available through our global help center.';
    return sprintf(
        '<aside id="%s" class="ipin-geo-note" data-default="%s">%s</aside>',
        esc_attr($id), esc_attr($default), esc_html($default)
    );
}
add_shortcode('geo_content', 'ipin_geo_content_shortcode');

function ipin_geo_content_assets(): void {
    wp_register_script('ipin-geo-content', '', [], null, true);
    wp_enqueue_script('ipin-geo-content');
    wp_add_inline_script('ipin-geo-content', <<<'JS'
(() => {
  if (window.__ipinGeoContentLoaded) return;
  window.__ipinGeoContentLoaded = true;
  const copy = {
    JP: 'Japan support: weekdays 09:00–18:00 JST.',
    DE: 'EU support: weekdays 09:00–17:00 CET.',
    US: 'US support: weekdays 09:00–17:00 ET.'
  };
  async function country() {
    const cached = sessionStorage.getItem('ipin_country');
    if (/^[A-Z]{2}$/.test(cached || '')) return cached;
    const controller = new AbortController();
    const timer = setTimeout(() => controller.abort(), 2500);
    try {
      const response = await fetch('https://my.ipin.io/info', {
        headers: {Accept: 'application/json'}, signal: controller.signal
      });
      if (!response.ok) throw new Error(`HTTP ${response.status}`);
      const data = await response.json();
      const value = String(data.country || '').toUpperCase();
      if (!/^[A-Z]{2}$/.test(value)) throw new Error('invalid country');
      sessionStorage.setItem('ipin_country', value);
      return value;
    } finally { clearTimeout(timer); }
  }
  country().then(value => {
    document.querySelectorAll('.ipin-geo-note').forEach(el => {
      el.textContent = copy[value] || el.dataset.default;
      el.dispatchEvent(new CustomEvent('ipin:geo-content', {
        bubbles: true, detail: {state: copy[value] ? 'resolved' : 'fallback'}
      }));
    });
  }).catch(() => {});
})();
JS);
}
add_action('wp_enqueue_scripts', 'ipin_geo_content_assets');

Testmatrix

Vor der Veröffentlichung von „Geo-Inhalte nach Besucher-IP in WordPress anzeigen“ sollten diese Fälle mit Mock-Antworten oder einem kontrollierten VPN-Ausgang geprüft werden.

BedingungEingabe / SetupErwartetes Ergebnis
T1[geo_content] × 22 unique DOM id; fetch × 1
T2CSP blockdefault HTML
T3latency > 2500 msAbortController; fallback
T4sessionStorage=JPfetch × 0

Automatisierter / Smoke-Test

// Browser console smoke test after inserting [geo_content] twice:
const boxes = [...document.querySelectorAll('.ipin-geo-note')];
console.assert(boxes.length === 2);
console.assert(new Set(boxes.map(x => x.id)).size === 2);

Fehlerbehandlung

Geo-Inhalte nach Besucher-IP in WordPress anzeigen: Fehler müssen in Logs oder Entwicklertools sichtbar sein, dürfen aber keinen leeren Bereich und keinen defekten Checkout erzeugen.

FehlerUrsacheReaktion
CORSOrigin headerdefault HTML
script merged × 2cache pluginglobal loaded flag
country invalidschemaignore value
consent=falseanalytics eventUI state only

Praxisbeispiel

Ein realistischer Einsatz für „Geo-Inhalte nach Besucher-IP in WordPress anzeigen“: Eine Dokumentationsseite zeigt lokale Supportzeiten per Shortcode, während der vollständige und crawlbare Hilfetext für alle Besucher erhalten bleibt.

Hinweise für den Betrieb

Geo-Inhalte nach Besucher-IP in WordPress anzeigen: Das Standard-HTML muss vollständig bleiben. IP-Standort ist keine Identität und ein clientseitiges Geosignal darf keine Berechtigung steuern.

Fazit

„Geo-Inhalte nach Besucher-IP in WordPress anzeigen“ besitzt nun einen eigenen Implementierungsweg, konkrete Tests und ein definiertes Fallback statt einer gemeinsamen Artikelschablone.