Inloggen:

Huisnummer verplichten in WooCommerce

Huisnummer verplichten in WooCommerce

Krijg je op jouw WooCommerce webshop bestellingen binnen zonder dat het huisnummer is ingevuld? Mensen vergeten dit gek genoeg vaker dan je denkt.

Helaas heeft WooCommerce ook geen controle of er een huisnummer is ingevuld, waardoor bestellingen zonder huisnummer er gewoon doorheen kunnen komen.

Super vervelend natuurlijk, want nu moet jij weer achter de klant aan om te achterhalen op welk huisnummer het pakketje bezorgd moet worden.

Om dit te voorkomen is het dus zaak om te zorgen dat WooCommerce controleert of het huisnummer is ingevuld en het huisnummer dus eigenlijk gewoon verplicht is om in te voeren.

Bepaalde thema’s hebben dit standaard al ingebouwd zitten en hebben er soms zelfs een apart vakje voor, maar de meeste thema’s hebben dit niet.

In dit artikel laat ik je een twee handige mogelijkheden zien om ervoor te zorgen dat mensen altijd het huisnummer invullen.

Huisnummer verplichten in het adresveld in WooCommerce

De eenvoudigste en snelste methode die ik altijd gebruik, is simpelweg ervoor zorgen dat het huisnummer verplicht moet worden ingevuld in het adresveld.

Ik gebruik hiervoor een snippet die je in het functions.php-bestand van je child thema kunt toevoegen. Wil je liever niet in bestanden van je thema aan de gang? Dat is verstandig, want vaak is dit ook niet aan te raden. Je kunt de code snippets ook op een andere manier op je website krijgen. In het artikel WordPress code snippets op de juiste plek plaatsen vertel ik je hier alles over.

Huisnummer verplichten (standaard WooCommerce afrekenpagina)

Ik heb meerdere codes voor je die je zou kunnen gebruiken op je website. Het vaakst zal het voorkomen dat je de standaard afrekenpagina hebt van WooCommerce. Je kunt dan de volgende code gebruiken om te laten controleren of het adresveld een huisnummer bevat.

add_action( 'woocommerce_after_checkout_validation', 'validate_checkout', 10, 2);
  function validate_checkout( $data, $errors ){
      if (  ! preg_match('/[0-9]/', $data[ 'billing_address_1' ] ) ){
          $errors->add( 'address', 'Om je pakket te bezorgen hebben we ook je huisnummer nodig. Voeg deze toe in het adresveld.' );
      }
  }

Huisnummer verplichten in verzendadres (Woo Blok)

Verder heb ik ook diverse codes die je kunt gebruiken in verschillende situaties wanneer je in de blok editor het WooCommerce afrekenblok hebt gebruikt voor op je afrekenpagina. Zo kun je het huisnummer verplichten in het verzendadres:

add_action( 'woocommerce_store_api_checkout_update_order_from_request', 'woo_blocks_address_field_validation', 10, 2);
function woo_blocks_address_field_validation( WC_Order $order, $request ) {
    $shipping_address = $order->get_address('shipping')['address_1'];
    
    if ( $shipping_address && ! preg_match( '/[0-9]+/', $shipping_address ) ) {
        throw new Exception( 'Om je pakket te bezorgen hebben we ook je huisnummer nodig. Voeg deze toe in het adresveld.' );
    }
}

Huisnummer verplicht maken in het factuuradres (Woo Blok)

Een andere optie die je hebt is om het huisnummer te verplichten in het factuuradres. Dit is met name handig wanneer je het verzendadres baseert op het factuuradres en er dus niet een specifieke verzendadres ingevuld hoeft te worden.

add_action( 'woocommerce_store_api_checkout_update_order_from_request', 'woo_blocks_address_field_validation', 10, 2);
function woo_blocks_address_field_validation( WC_Order $order, $request ) {
    $billing_address  = $order->get_address('billing')['address_1'];
    
    if ( $billing_address && ! preg_match( '/[0-9]+/', $billing_address ) ) {
        throw new Exception( 'Om je pakketje te bezorgen hebben we ook je huisnummer nodig. Voeg deze toe in het adresveld.' );
    }
}

Huisnummer verplichten in factuur- en verzendadres (Woo Blok)

Tot slot is het ook nog mogelijk dat je het huisnummer wil verplichten in zowel het factuur- als verzendadres. Je kunt dit met onderstaande code bewerkstelligen.

add_action( 'woocommerce_store_api_checkout_update_order_from_request', 'woo_blocks_address_field_validation', 10, 2);
function woo_blocks_address_field_validation( WC_Order $order, $request ) {
    $shipping_address = $order->get_address('shipping')['address_1'];
    $billing_address  = $order->get_address('billing')['address_1'];

    if ( $shipping_address && ! preg_match( '/[0-9]+/', $shipping_address ) ) {
        throw new Exception( 'Om je pakketje te bezorgen hebben we ook je huisnummer nodig. Voeg deze toe in het adresveld.' );
    }

    if ( $billing_address && ! preg_match( '/[0-9]+/', $billing_address ) ) {
        throw new Exception( 'Je factuuradres bevat geen huisnummer. Voeg deze toe aan het adresveld.' );
    }
}

Zodra mensen nu vergeten een huisnummer in te voeren in het adresveld, komt de volgende melding tevoorschijn en kan er nog niet afgerekend worden.

WooCommerce huisnummer vergeten melding

Aangezien iedereen een pakket goed wil ontvangen, is dit de eenvoudigste manier om het te bewerkstelligen? Je klant ziet tenslotte direct wat er gedaan moet worden om verder te gaan en zijn blij dat het pakketje straks zonder problemen thuis gebracht kan worden.

WooCommerce huisnummerveld toevoegen en verplichten

Sommige thema’s hebben het huisnummer veld al apart op de afrekenpagina staan, maar heel veel thema’s hebben dit niet. Wanneer je een apart veld wilt maken waar klanten een huisnummer kunnen invullen tijdens het afrekenproces, kun je extra velden toevoegen aan de afrekenpagina om dit te bereiken.

Je kunt hiervoor een plugin als Checkout Field Editor gebruiken. Wanneer je deze plugin geïnstalleerd hebt kun je naar “WooCommerce → Checkout Fields” gaan en op “Add fields” klikken.

Vul vervolgens de juiste gegevens in en plaats het adresveld links en het huisnummer rechts. Hieronder op de afbeelding kun je zien hoe je het kunt instellen.

WooCommerce huisnummer veld toevoegen

Meer werk dan dit is het niet om het huisnummer in een apart veld te krijgen en te verplichten. Dankzij het aparte veld voor het huisnummer zijn mensen van zichzelf al minder snel geneigd om het ook te vergeten.

WordPress Hulp Nodig? Join Het WP Lab

Het WordPress Lab MockupHeb je vragen aan de hand van dit artikel of wil je verder op weg geholpen worden met je website?

Sluit je aan bij Het WordPress lab, een community voor WordPress-liefhebbers waarin ik antwoord geef op jouw WordPress vragen en je toegang krijgt tot al mijn WordPress cursussen.

31 reacties

  1. Het is mij gelukt om met plugin WooCommerce Checkout Manager huisnummer verplicht te laten invullen. Maar nu wil ik ook graag dat het huisnummer ook weergegeven word op de factuur en emails. Hoe moet ik dat doen. Kan je dat mij stapsgewijs uitleggen en in pietje puk taal haha
    Alvast bedankt.

      1. Hi,
        Kan je mij laten weten welke code ik moet gebruiken, zodat de mijn klant het huisnummer ook ziet op de factuur. Ik had code huisnummer verplichten in factuur en verzendadres. Maar klant zegt dat ze nog steeds geen huisnummer ziet als ze ze het pakketje wilt versturen.
        Alvast bedankt.
        Marsie

  2. Hoi Maikel,

    Als je alleen een nummer en letter toevoegt, dan krijg je geen foutmelding. Toevallig een klant, die nu 42A had ingevuld en geen straatnaam.

    1. Dat klopt. Dit script is om te voorkomen dat een huisnummer vergeten wordt en niet andersom, aangezien normaliter mensen hun straatnaam niet zullen vergeten in te vullen.

  3. Ik heb met de Checkout Field Editor for WooCommerce plugin een extra huisnummer veld toegevoegd aan de afrekenpagina. Echter op de factuur verschijnt dit veld niet bij de adresregels.
    Hoe kan ik dit toevoegen aan de mailings / facturen?

  4. Dit werkt maar half. De notice wordt goed weergegeven maar het veld zelf wordt onterecht als gevalideerd gemarkeerd met de ‘woocommerce-validated’ class.

    1. Thanks voor je bericht. De code was al aardig oud, dus daardoor zal het vermoedelijk niet helemaal volledig meer goed werken. Ik heb het zojuist up-to-date gebracht met een nieuwe actuele code.

      1. Helaas werkt deze oplossing bij mij niet. Code opgenomen in de plug-in Code Snippets, maar bestellingen zonder huisnummer komen zonder foutmelding gewoon door.

        1. Probeer het nog eens met de nieuwe code. De andere codes werken overigens ook, maar dit is enkel voor het WooCommerce blok afrekenen in de blok editor. Ik heb dit nu wat duidelijker vermeld. 🙂

  5. Geweldig, wederom een goede toevoeging aan mijn webshop.
    Is er ook een dergelijke code om het e-mail adres te checken of een extra veld om twee dezelfde e-mail adressen in te vullen. Dit is in mijn shop de meest voorkomende fout.
    Groet
    Karel

  6. Hoi Maikel,
    Het is gelukt met de code snippet aan functions.php toe te voegen. Waarvoor dank!
    Echter, de foutmelding is niet in zicht omdat ik een sticky header heb, daar ligt hij dan onder en aangezien ook het veld Straat en huisnummer niet gehighlight wordt krijgt klant nu geen feedback wat hij fout heeft gedaan.

  7. Beste Maikel,

    Heb je ook een script om de straatnaam verplicht te maken?

  8. Beste,
    Ik herken eerder genoemde problemen van Martin en Hein. Met een extra huisnummerveld krijgen de klant en ik vervolgens in ongeveer deze vorm de informatie binnen:

    “HUISNUMMER: 9
    FACTUURADRES:
    Pietje Puk
    Voorbeeldlaan
    1234 AB Amsterdam”

    Heel lelijk en onprofessioneel. Hoe dit gebeurt is nergens te vinden?

  9. Straat apart van huisnummer is een goede oplossing, maar ik kom ook vaak een huisnummertoevoeging tegen. Is daar een oplossing voor?

  10. Met de checkout field editor pro plugin (GPL) kun je een eigen regex validatie methode toevoegen en toepassen op een bepaald veld, dit werkt prima met jouw regex /([0-9]+)/Uis
    Dus eventueel nog een extra methode.

  11. Beste Maikel,

    Bij mij komt het huisnummer wel in de bevesting v.d. aankoop die ik ontvang, maar in de bevestigingsmail die de klant krijgt, ontbreekt het huisnummer. Daardoor denkt de klant dat hij het vergeten is in te vullen, wat niet zo is. Hoe komt dat en kan ik het oplossen?

    Met vr gr, Marijn

  12. In de backend komt het niet makkelijk erbij te staan, en is het een “extra veld”, dat is dan wat onhandig. Is daar ook een oplossing voor?