Checkout velden wel of niet verplicht maken

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

Wil je direct een mail ontvangen wanneer nieuwe snippets zijn toegevoegd?

Vul dan onderstaand formulier in en je krijgt direct na het toevoegen van nieuwe snippets een email. Zo blijf je altijd bij!

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 ) {
   //First billing
   $fields['billing']['billing_company']['required'] = true;
   unset($fields['billing']['billing_state']);

   //then shipping
   $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.

Codesnippet verbeteren

Het doel van deze code snippet is een probleem op te lossen in een specifieke situatie. Daarom zie je regelmatig voorbeelden waar je specifiek tekst moet aanpassen om te krijgen wat je wilt. 

Wil jij leren hoe je complete plugins zelf kunt programmeren inclusief ‘admin’ schermen voor het instellen en de output in de gewenste taal, dan is misschien de cursus ‘Introductiecursus Plugins Programmeren‘ iets voor jou. 

Wil je als ‘full stack’ WordPress programmeur aan de gang gaan, dan biedt WordXPression ook een compleet traject ‘WordPress Developer‘ aan. Dit is een traject wat deels online, deels klassikaal wordt gegeven.

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

Een redirect na aankoop van een specifiek product
Hoe zorg je ervoor, dat na aankoop van een product iemand naar een specifieke pagina gaat?
De 'Sale' badge in WooCommerce naast de prijs tonen
Wanneer je gebruik maakt van één van de WooCommerce thema’s die op het Storefront framework zijn...
Pagina redirecten naar aanleiding van een user role
Met deze code kan je afhankelijk van de gebruikersrol waarmee wordt ingelogd je gebruikers naar de juiste...
De webwinkel is op zondag gesloten
Het voordeel van een webshop is dat hij 24/7 open is. Maar wat nu, wanneer je op zon- en feestdagen principieel...
Bestel en ontvang het morgen badge voor WooCommerce
Voer de 'koop druk' een beetje op, door aan te geven hoe snel iemand iets in huis kan krijgen
Een unieke coupon code genereren in WooCommerce
Zo genereer je een unieke coupon code in WooCommerce

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 reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

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

Contact Information

WordXPression 

Bezoekadres
Eperweg 135 (op afspraak)
8072 PL Nunspeet

Postadres
Aardoliestraat 14-I
7553GT Hengelo

06-10449807 (van 9:00 tot 17:00 van ma-vr)

KVK : 75580152 

Social media
Stuur een bericht

Introductiecursus Plugins Programmeren

wordpress coding Can use php code as background in html

Ontdek de wereld van WordPress Plugin ontwikkeling met WordXPression's introductiecursus