Spring til indhold

GuideAdresser

Adresseforslag i Contact Form 7

Contact Form 7 har ikke en adressetype, så adressen er almindelige tekstfelter. Giv dem et id med form-tagget, og lad adressefeltet finde dem: brugeren vælger adressen, og postnummer og by står klar — rigtigt stavet.

Kaldet i guiden

3 min læsning6 trinOpdateret
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.

Felterne i formularen

I formularens fane Form skriver du adressen som tre tekstfelter. id: sætter inputtets id, så scriptet kan finde feltet; navnet (adresse, postnr, by) er det, du bruger i mailen. Et skjult felt kan tage BFE-nummeret med:

Fanen Form
<label> Adresse
    [text* adresse id:gf-adresse] </label>

<label> Postnummer
    [text* postnr id:gf-postnr] </label>

<label> By
    [text* by id:gf-by] </label>

[hidden bfe]

[submit "Send"]

Et id må kun findes én gang på siden. Har du to formularer med adresse på samme side, så giv dem hver deres id’er — eller brug klasser med class: og ret selektorerne til klasser.

Indsæt scriptet

Læg koden i temaets functions.php (helst i et child-tema) eller i et plugin til kodestumper. Den skriver script-tagget nederst på de sider, hvor der står en Contact Form 7-formular:

functions.php
<?php
add_action('wp_footer', function () {
    $post = get_post();
    if (!$post || !has_shortcode($post->post_content, 'contact-form-7')) {
        return;
    }
    ?>
    <script
      src="https://grundfast.dk/widget/v1/grundfast-adresse.js"
      defer
      data-key="gf_pub_live_..."
      data-felt="#gf-adresse"
      data-postnr="#gf-postnr"
      data-by="#gf-by"
      data-bfe='input[name="bfe"]'
    ></script>
    <?php
});

Står formularen i en widget, en sidebygger eller en skabelon i stedet for i sidens indhold, finder has_shortcode den ikke. Så fjern tjekket — scriptet gør ingenting på sider uden feltet.

Adressen i mailen

I fanen Mail bruger du felternes navne som mail-tags, også det skjulte felt:

Fanen Mail
Adresse: [adresse]
[postnr] [by]
BFE-nummer: [bfe]

BFE-nummeret er ejendommens nummer i de offentlige registre. Med det kan du slå ejendommen op bagefter — bygninger, areal, vurdering — uden at skulle tolke adressen igen. Skriver brugeren adressen uden at vælge et forslag, er feltet tomt.

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:

bash
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 uden data-key.
  • Ingen linje og ingen liste — feltet blev ikke fundet. Tjek at selektoren i data-felt rammer feltet: skriv document.querySelectorAll('…') med den samme selektor i konsollen.
  • Listen vises, men felterne udfyldes ikke — selektorerne i data-postnr og data-by rammer 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

Ja. Forslagene er en hjælp, ikke et krav. Feltet virker som et almindeligt tekstfelt, og Contact Form 7 validerer som altid. Vælger brugeren ikke et forslag, udfyldes postnummer, by og BFE-nummer ikke af sig selv.

Contact Form 7 er lavet til felter og tekst, ikke til scripts, og WordPress fjerner ofte script-tags fra indhold, som redaktører gemmer. functions.php er den sikre vej.

Ja. Formularen bliver stående på siden, og feltet bliver hængende på inputtet. Efter en vellykket indsendelse tømmer Contact Form 7 felterne som normalt.

Ja. Tilføj to tekstfelter med hver deres id og peg på dem med data-etage og data-doer på script-tagget. Uden dem står etage og dør i adressefeltet efter husnummeret.

Prøv det på rigtige data

En gratis nøgle giver adgang til alle registre med samme svarform. Testnøgler faktureres aldrig, så du kan bygge færdigt, før du skifter til produktion.

Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0

Relateret