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 Plugins → geoAPI 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(...);
});