CAMPUS Code Snippets

Het adresveld in checkout nakijken op nummer

PROBLEEM

PHP
// Check if address field contains house number otherwise provide error message
  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', 'Het adresveld bevat geen huisnummer of busnummer.' );
      }
  }

Het adres-veld van de WooCommerce checkout is een standaard tekst veld. Je kan er eender welke input in kwijt.
En WooCommerce zelf controleert niet welke tekst precies ingegeven wordt.

Kortom: als je koper per ongeluk het busnummer vergeet in te vullen dan heb je een probleem. Althans, een administratief probleem. Je zal de koper even moeten contacteren voor de nodige gegevens.

Billing adresveld

Het adresveld heeft het id “billing_addres_1”; dat zoeken we op en sleuren we doorheen een PHP-functie die nakijkt of er cijfers in staan. Indien er geen cijfers inzitten, dan krijgt m’n een foutmelding en kan m’n de bestelling niet afronden.
Met andere woorden: de foutmarge op het vergeten van de busnummer wordt wel heel klein.

Indien de besteller het pakket naar een ander adres wil verzenden, dan wordt het Shipping adresveld ingevuld. Om ook dat veld te controleren op een nummer heb je deze code nodig.

PHP
// Check if address field contains house number otherwise provide error message
  add_action( 'woocommerce_after_checkout_validation_', 'validate_checkout_shipping', 10, 2);
  function validate_checkout_shipping( $data, $errors ){
      if (  ! preg_match('/[0-9]/', $data[ 'shipping_address_1' ] ) ){
          $errors->add( 'address', 'Het adresveld bevat geen huisnummer of busnummer.' );
      }
  }