← Alle Rezepte

WordPress-Integration via Shortcode

Ein Mini-Plugin (~30 Zeilen PHP), das einen [geoapi_place]-Shortcode bereitstellt — direkt einsetzbar in jeder Seite, jedem Beitrag, in Elementor / Gutenberg-Blöcken.

Schritt 1: Plugin-Datei anlegen

Unter wp-content/plugins/geoapi-place/geoapi-place.php:

<?php
/*
Plugin Name: geoAPI Place Shortcode
Description: Stellt einen [geoapi_place]-Shortcode bereit, der das geoAPI-Place-Widget einbindet.
Version: 1.0
Author: Du
*/

if (!defined('ABSPATH')) exit;

// Widget-Skript bei Bedarf laden
add_action('wp_enqueue_scripts', function() {
    wp_enqueue_script(
        'geoapi-widget',
        'https://geoapi.world/dist/geoapi-widget.js',
        [], '1.0', true
    );
});

// Shortcode [geoapi_place name="ort" placeholder="z. B. München"]
add_shortcode('geoapi_place', function($atts) {
    $a = shortcode_atts([
        'name'        => 'ort',
        'placeholder' => 'Ort eingeben',
        'required'    => 'no',
        'lat'         => '',  // wenn gesetzt: Hidden-Feld für Lat
        'lon'         => '',
        'country'     => '',
    ], $atts);

    $attrs = sprintf(
        'type="text" name="%s" placeholder="%s" data-geoapi-place autocomplete="off"',
        esc_attr($a['name']), esc_attr($a['placeholder'])
    );
    if ($a['required'] === 'yes')   $attrs .= ' required';
    if ($a['lat'])     $attrs .= ' data-geoapi-lat="'     . esc_attr($a['lat'])     . '"';
    if ($a['lon'])     $attrs .= ' data-geoapi-lon="'     . esc_attr($a['lon'])     . '"';
    if ($a['country']) $attrs .= ' data-geoapi-country="' . esc_attr($a['country']) . '"';

    return "<input $attrs>";
});

Schritt 2: Plugin aktivieren

Im WordPress-Admin unter PluginsgeoAPI Place Shortcode aktivieren.

Schritt 3: Shortcode verwenden

In jeder Seite, jedem Beitrag, im Editor:

[geoapi_place name="geburtsort" placeholder="Wo wurdest du geboren?"
              lat="g_lat" lon="g_lon" country="g_cc" required="yes"]

Ergibt im Frontend ein vollwertiges Eingabefeld mit Live-Auto-Suggest. Beim Form-Submit kommen $_POST['geburtsort'], $_POST['geburtsort_geonameid'], $_POST['geburtsort_timezone'], $_POST['g_lat'], $_POST['g_lon'], $_POST['g_cc'] beim Server an.

Erweiterung: Mit Contact Form 7 / WPForms koppeln

In CF7-Editor einfach den Shortcode statt eines normalen Text-Feldes nutzen — die Hidden-Felder kommen automatisch in der CF7-Mail an.

Performance-Hinweis

Das Skript wird auf jeder Seite geladen, auf der irgendein Theme-Element wp_footer() aufruft — das sind alle. Wenn du das nur auf bestimmten Seiten brauchst, ergänze die wp_enqueue_scripts-Action mit einer is_page()-Prüfung:

add_action('wp_enqueue_scripts', function() {
    if (!is_page(['kontakt', 'horoskop'])) return;
    wp_enqueue_script(...);
});