Adresse-autocomplete i Elementor-formularer
Kobl adresse-widget'en på et Elementor Pro-formularfelt via felt-id'et, også i popups, og udfyld postnr. og by automatisk.
Elementor Pro's Form-widget giver hvert felt et id, du selv vælger. Feltet bliver til <input id="form-field-<id>" name="form_fields[<id>]">, og det er en stabil selektor at koble widget'en på. Gratisversionen af Elementor har ingen Form-widget, så guiden forudsætter Elementor Pro eller en formular med almindelige input-felter.
Den hurtige vej: pluginnet Lynbro Danadresse
Det gratis plugin Lynbro Danadresse fra wordpress.org giver adresse-autocomplete i WooCommerce, Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Elementor, GiveWP, Forminator og flere. Det kalder API'et via din egen server, så nøglen aldrig når browseren.
- Gå til Plugins → Tilføj nyt i WordPress, søg efter "Lynbro Danadresse", klik Installér og Aktivér.
- Opret en nøgle under Nøgler. Brug en almindelig live-nøgle uden tilladte domæner: pluginnet kalder API'et fra din egen server, og dér afvises en domænelåst nøgle, fordi et serverkald ikke har en
Origin. - Sæt nøglen ind under Lynbro → Danadresse → Settings. Fanen Status laver et testopslag med nøglen.
- Elementor-formularer har ingen adressefelttype, så pluginnet finder adressefeltet med auto-detect, eller du angiver dets CSS-selektor under Integrations (fx
#form-field-adressefra trin 2 nedenfor).
Pluginnet udfylder kun postnr. og by i separate felter for formular-plugins med eget adressefelt (WooCommerce, Gravity Forms, WPForms m.fl.). Skal din Elementor-formular også udfylde postnr. og by, så brug din egen kode som nedenfor.
1. Opret en browsernøgle
Opret en live-nøgle under Nøgler og lås den til sitets domæner under Tilladte domæner. Se Browsernøgler og tilladte domæner.
2. Giv felterne id'er
Åbn formularen i Elementor. Klik på adressefeltet, gå til fanen Avanceret for feltet og skriv adresse som ID. Giv postnummer- og by-felterne id'erne postnr og by. Elementor laver id'erne om til form-field-adresse, form-field-postnr og form-field-by.
3. Indlæs widget'en med et mu-plugin
Gem filen som wp-content/mu-plugins/danadresse.php:
<?php /** * Plugin Name: Danadresse autocomplete (Elementor) */ if (!defined('ABSPATH')) { exit; } add_action('wp_enqueue_scripts', function () { wp_enqueue_script( 'danadresse-autocomplete', 'https://danadresse.dk/static/js/danadresse-autocomplete-1.0.0.js', [], null, true ); wp_add_inline_script('danadresse-autocomplete', <<<'JS' const API_KEY = "DIN_BROWSER_NØGLE"; function setField(el, value, events) { if (!el || value == null) return; const setter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value").set; setter.call(el, value); for (const type of events || ["input", "change"]) { el.dispatchEvent(new Event(type, { bubbles: true })); } } function streetLine(a) { let line = a.vejnavn + " " + a.husnr; if (a.etage) line += ", " + a.etage + "."; if (a["dør"]) line += " " + a["dør"]; return line; } function bindAll() { document.querySelectorAll("#form-field-adresse").forEach((input) => { const form = input.form || document; DanadresseAutocomplete.attach(input, { apiKey: API_KEY, onSelect(a) { setField(input, streetLine(a), ["change"]); setField(form.querySelector("#form-field-postnr"), a.postnr); setField(form.querySelector("#form-field-by"), a.postnrnavn); }, }); }); } bindAll(); // Popups og faner tegner formularen senere new MutationObserver(bindAll).observe(document.body, { childList: true, subtree: true }); JS ); });
Scriptet bliver indlæst på alle sider, men laver først kald, når nogen skriver i adressefeltet. Har du Elementor Pro, kan du i stedet indsætte de to script-tags under Elementor → Custom Code med placeringen body – end.
4. Test
Udfyld formularen på det publicerede site, vælg et forslag, og send den. Tjek under Elementor → Indsendelser (eller i mailen), at postnr. og by kom med. Ligger formularen i en popup, så åbn popup'en og test der. 403 origin_not_allowed i konsollen betyder, at domænet mangler på nøglen.
5. Valgfrit: tjek på serveren
Elementor Pro har action-hooket elementor_pro/forms/validation, hvor du kan kalde /datavask/adgangsadresser med en server-nøgle uden domænelås og afvise feltet med $ajax_handler->add_error(), hvis svaret er kategori C. Se Datavask i checkout.
Næste skridt
- Contact Form 7 og WooCommerce på samme site
- Pluginnet på wordpress.org: Lynbro Danadresse
Relaterede guides
Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)