Checkout velden wel of niet verplicht maken

Checkout velden wel of niet verplicht maken

Hoe kan je checkout velden in WooCommerce wel of niet verplicht stellen?

Het wel of niet verplicht maken van checkout velden lijkt heel sterk op het verwijderen van checkout velden. Stel, dat we de bedrijfsnaam verplicht willen maken, omdat we uitsluitend B2B handelen. Dan ziet de code voor het verplicht maken van dat veld er als volgt uit (ervan uitgaand, dat we zowel het factuur- als verzendadres verplicht willen stellen).

<?php
add_filter( 'woocommerce_checkout_fields' , 'wxp_require_woo_checkout_fields' );
 
function wxp_require_woo_checkout_fields( $fields ) {
   $fields['billing']['billing_company']['required'] = true;
   $fields['shipping']['shipping_company']['required'] = true;
   return $fields;
}

Het spreekt voor zich, dat je andere velden verplicht kan maken door dezelfde namen te gebruiken, als je in het voorbeeld van het verwijderen van velden ziet.

Deze code zal prima werken, maar we kunnen hem iets mooier maken. En voor dat ‘mooier maken’ wil ik je een klein beetje meer uitleggen, hoe WordPress (en daarmee ook WooCommerce) intern werkt.

Om WordPress ‘op maat te maken’, kent WordPress zogenaamde ‘hooks’. Een ‘hook’ is een punt in het programma, waar WordPress eigenlijk vraagt: ‘Wil iemand nog iets veranderen aan wat ik ga doen’?

En WordPress kent hierbij een tweetal verschillende soorten hooks. ‘Action hooks’ en ‘Filter hooks’. Het verschil tussen een action hook en een filter hook is dat een action hook een actie uitvoert. En na het uitvoeren van de actie is die hook ook klaar. Een filter hook wijzigt de informatie die WordPress wil gaan tonen.

Daarom krijgt de functie hierboven ook een $fields parameter mee. In de functie veranderen we die $fields parameter en geven die weer netjes -veranderd- terug aan de functie.

In het voorbeeld van het verwijderen van velden en in het voorbeeld van het verplicht maken van velden veranderen we iets aan die velden. Er is geen enkele reden, waarom we dat niet in één functie zouden kunnen doen. Sterker nog, het is veel beter om dat te doen.

Dus laten we eens naar een voorbeeld kijken, waar we een veld verwijderen (‘state’) voor zowel het verzend- als het factuuradres en de bedrijfsnaam voor verzend- en factuuradres verplicht stellen.

Omdat we logische functienamen willen gebruiken, noemen we ze natuurlijk niet ‘wxp_require_woo_checkout_fields’ of ‘wxp_remove_woo_checkout_fields’ maar iets als ‘wxp_config_woo_checkout_fields’.

<?php
add_filter( 'woocommerce_checkout_fields' , 'wxp_config_woo_checkout_fields' );
 
function wxp_config_woo_checkout_fields( $fields ) {

   $fields['billing']['billing_company']['required'] = true;
   unset($fields['billing']['billing_state']);


   $fields['shipping']['shipping_company']['required'] = true;
   unset($fields['shipping']['shipping_state']);
  
}

In deze functie gaan we dus alles bijhouden wat we aan de checkout fields willen aanpassen. In de toekomst zal ik je bijvoorbeeld ook laten zien, hoe je een extra veld kan toevoegen.

WordPress Developer worden?

Wil je leren hoe je zelf plugins, thema's, shortcodes, widgets, Gutenberg blocks en meer kan maken?
Schrijf je dan in voor de cursus WordPress Developer.

Meer snippets

Shortcodes voor het tonen en verbergen van content
Hoe maak ik een shortcode waarmee ik content van mijn posts kan verbergen?
De geschatte leestijd voor je content tonen
Laat de geschatte tijd voor een blogposts zien op diverse manieren.
Een veld toevoegen in WooCommerce bestellingen
Hoe voeg je extra velden toe aan je WooCommerce checkout procedure?
Maak WP Courseware lessen zichtbaar in Elementor
Standaard kan Elementor Pro jouw WP Courseware Units niet vinden. Zo los je dit op.
WooCommerce checkout velden verwijderen
Sommige velden in het bestelformulier van WooCommerce heb je absoluut niet nodig. En zo haal je ze weg!
Beperk zoekresultaten tot bepaalde post-typen
Hoe beperk je de post typen die terug komen vanuit een zoekopdracht?

Veiligheid voor alles!

Met betrekking tot de code die je hier aantreft een aantal waarschuwingen, voordat je deze code snippets toepast op je eigen website.

  1. Voer de code nooit direct uit op je eigen website, maar probeer deze eerst op een staging omgeving of een locale kopie van je website. 
  2. Voor je de geteste code installeert op je website, maak eerst een back up van je website.
  3. Zorg altijd voor alle zekerheid, dat je voor je een aanpassing live zet, je ook de FTP gegevens van je website bij de hand hebt.  
 
Voel je je onvoldoende vertrouwd met het toepassen van een dergelijke code snippet, bedenk dat je dit ook door een professional kan laten doen. De WordXPression support strippenkaart is een voordelige manier om dit soort aanpassingen te laten doen.
Heeft dit artikel je geholpen je probleem op te lossen?
Deel het met je vrienden via je favoriete social media.

Heb je vragen bij, of opmerkingen over deze code snippet, stel deze bij de commentaren hieronder.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Word je website de baas. Neem vandaag nog contact op!

Contact Information

WordXPression 
Imkersdreef 525
7328DG Apeldoorn
06-10449807 (van 9:00 tot 17:00 van ma-vr)

KVK : 75580152 

Social media
Stuur een bericht

Flinke kortingen op cursussen van WordXPression.