Adresse-autocomplete i WPForms
Kobl adresse-widget'en på WPForms' adressefelt eller på almindelige tekstfelter i WPForms Lite, og udfyld postnr. og by automatisk.
WPForms har et Address-felt, som hører til de betalte felttyper. Det giver input-felter med navne som wpforms[fields][3][address1], wpforms[fields][3][postal] og wpforms[fields][3][city], hvor tallet er feltets id. Bruger du WPForms Lite, laver du tre almindelige tekstfelter og giver dem hver sin CSS-klasse. Scriptet nedenfor dækker begge dele.
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.
- Tjek under Integrations, at WPForms er slået til. Pluginnet kobler sig på Address-feltet og udfylder postnr. og by. Med WPForms Lite's almindelige tekstfelter angiver du i stedet adressefeltets CSS-selektor (fx
.dk-adresse inputfra trin 2 nedenfor).
Vil du hellere have din egen kode, eller postnr. og by i separate Lite-felter, så følg trinene 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. Sæt felterne op
Med Address-feltet: vælg skemaet International, så feltet har et postnummer i stedet for en amerikansk ZIP-kode, og skjul delfeltet til region.
Med WPForms Lite: lav tre Single Line Text-felter. Under Avanceret → CSS-klasser giver du dem klasserne dk-adresse, dk-postnr og dk-by. WPForms sætter klassen på feltets container, så selektoren bliver .dk-adresse input.
3. Mu-pluginnet
Gem filen som wp-content/mu-plugins/danadresse.php:
<?php /** * Plugin Name: Danadresse autocomplete (WPForms) */ 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 attach(input, postnrEl, byEl) { DanadresseAutocomplete.attach(input, { apiKey: API_KEY, onSelect(a) { setField(input, streetLine(a), ["change"]); setField(postnrEl, a.postnr); setField(byEl, a.postnrnavn); }, }); } function bindAll() { // Address-feltet: wpforms[fields][3][address1] → [postal] og [city] document.querySelectorAll('.wpforms-form input[name$="[address1]"]').forEach((input) => { const form = input.form; const named = (part) => form.querySelector('[name="' + input.name.replace("[address1]", "[" + part + "]") + '"]'); attach(input, named("postal"), named("city")); }); // WPForms Lite: tekstfelter med CSS-klasser document.querySelectorAll(".wpforms-form .dk-adresse input").forEach((input) => { const form = input.form; attach(input, form.querySelector(".dk-postnr input"), form.querySelector(".dk-by input")); }); } bindAll(); new MutationObserver(bindAll).observe(document.body, { childList: true, subtree: true }); JS ); });
4. Test
Udfyld formularen, vælg et forslag, og send den. Tjek i notifikationsmailen (eller under WPForms → Entries, som kræver en betalt licens), at postnr. og by kom med. Bruger du et andet skema end International, kan postnummer-delfeltet hedde noget andet. Tjek navnet med Inspicér. 403 origin_not_allowed i konsollen betyder, at domænet mangler på nøglen.
5. Valgfrit: tjek på serveren
I action-hooket wpforms_process kan du sende gade og postnummer til /datavask/adgangsadresser med en server-nøgle uden domænelås og sætte en fejl på feltet i wpforms()->process->errors, hvis svaret er kategori C. Se Contact Form 7-guiden for et fuldt eksempel på kaldet og Datavask i checkout for kategorierne.
Næste skridt
- Gravity Forms
- Pluginnet på wordpress.org: Lynbro Danadresse
Relaterede guides
Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)