GuideAdresser
Adresseforslag i Gravity Forms
Gravity Forms’ Address-felt har allerede de underfelter, en dansk adresse skal bruge: gade, by og postnummer. Adressefeltet hægter sig på gadelinjen og udfylder resten, når brugeren vælger en adresse. Det kræver ét script og ingen ændringer i selve formularen.
Kaldet i guiden
På denne side6 trin
Opret en offentlig nøgle
Feltet kalder Grundfast direkte fra kundens browser, så det bruger en offentlig nøgle (gf_pub_live_). Den må gerne stå i sidens kildekode, fordi den kun virker fra de domæner, du skriver på den, og kun til adresseopslag. Opret den under Nøgler i dashboardet: vælg Offentlig og skriv dine domæner, fx firma.dk og www.firma.dk.
Byg og test med en offentlig testnøgle (gf_pub_test_), som aldrig faktureres, og skift til live-nøglen, når feltet virker. Reglerne for domæner — www, underdomæner med *. og porte — står i dokumentationen for adressefeltet.
Underfelterne i Address-feltet
Address-feltet består af op til seks inputs. Gravity Forms giver hvert af dem en beholder med en fast klasse, uanset formularens og feltets nummer — det gør klasserne til den sikre selektor:
| Underfelt | Input-id | Selektor |
|---|---|---|
| Street Address | {felt}.1 | .address_line_1 input |
| City | {felt}.3 | .address_city input |
| ZIP / Postal Code | {felt}.5 | .address_zip input |
Address Line 2 kan stå tomt: etage og dør kommer med i gadelinjen, når bygningen har lejligheder (fx “Vestergade 10, 2. th”). State / Province bruges ikke i Danmark.
Indsæt scriptet
Læg koden i temaets functions.php (helst et child-tema) eller i et plugin til kodestumper. Den skriver script-tagget nederst på siden, når Gravity Forms indlæser en formular:
<?php
// Kun på sider, hvor Gravity Forms viser en formular.
add_action('gform_enqueue_scripts', function () {
add_action('wp_footer', 'grundfast_adressefelt', 20);
});
function grundfast_adressefelt() {
static $printed = false; // én gang, også med flere formularer på siden
if ($printed) return;
$printed = true;
?>
<script
src="https://grundfast.dk/widget/v1/grundfast-adresse.js"
defer
data-key="gf_pub_live_..."
data-felt=".gform_wrapper .address_line_1 input"
data-postnr=".address_zip input"
data-by=".address_city input"
></script>
<?php
}Postnummer og by slås op i den formular, brugeren skriver i, så flere formularer — eller flere Address-felter i hver sin formular — på samme side holder sig til deres egne felter. Har én formular to Address-felter (fx levering og faktura), så sæt forslag på dem hver for sig ved at sætte feltets eget id foran, fx #field_3_4 .address_line_1 input.
Formularer på flere sider og AJAX-formularer tegner felterne igen undervejs. Feltet ser det og hægter sig på det nye input.
Gem BFE-nummeret med indsendelsen
Vil du have BFE-nummeret eller adressens id med i indsendelsen, så tilføj et Hidden-felt og peg på det med data-bfe eller data-adgangsadresse-id. Find Hidden-feltets id med browserens inspektør — det har formen input_<formular>_<felt>:
data-bfe="#input_3_9"Tjek nøglen fra en terminal
Før du leder i platformens indstillinger, kan du se, om nøglen og domænet passer sammen. Kaldet nedenfor er det samme, feltet laver. Origin er dit domæne, præcis som browseren skriver det:
curl -G "https://api.grundfast.dk/v1/adresse/search" \
--data-urlencode "q=Vestergade 10" \
--data-urlencode "token=$GRUNDFAST_PUBLIC_KEY" \
-H "Origin: https://www.firma.dk"Svarer det med adresser, er nøglen i orden. Et 403 med origin … is not allowed betyder, at domænet ikke står på nøglen — ret listen i dashboardet; det slår igennem inden for et halvt minut.
Hvis der ikke kommer forslag
- Åbn browserens konsol (F12, fanen Console). Feltet skriver én linje, der begynder med
[grundfast-adresse], med årsagen fra API’et. no public key— scriptet blev indlæst udendata-key.- Ingen linje og ingen liste — feltet blev ikke fundet. Tjek at selektoren i
data-feltrammer feltet: skrivdocument.querySelectorAll('…')med den samme selektor i konsollen. - Listen vises, men felterne udfyldes ikke — selektorerne i
data-postnrogdata-byrammer ikke noget. De slås op i samme formular som adressefeltet først, derefter på hele siden.
Feltet stopper aldrig formularen: fejler et kald, lukker listen, og kunden kan skrive adressen i hånden som før.
Var denne side nyttig?
Ofte stillede spørgsmål
Det afhænger af din opsætning: WordPress og sikkerhedsplugins fjerner ofte script-tags fra indhold, som redaktører gemmer. functions.php eller et plugin til kodestumper er den sikre vej, fordi koden ikke går gennem editoren.
Ja. Klasserne address_line_1, address_city og address_zip findes i begge, så selektorerne er de samme.
Ingenting — etage og dør skrives i gadelinjen sammen med gade og husnummer, sådan som en dansk adresse normalt skrives. Vil du have dem i hvert sit felt, så peg data-etage og data-doer på to felter.
Nej. Feltet venter, til brugeren holder en kort pause, og spørger først fra to tegn. En adresse koster typisk en håndfuld kald, plus ét, hvis bygningen har lejligheder.
Prøv det på rigtige data
Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0
Relateret