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

Titel voor reacties aanpassen per CPT
Wil je de titel van je WordPress commentaar sectie aanpassen, dan moet je dit beslist lezen.
Beperk zoekresultaten tot bepaalde post-typen
Hoe beperk je de post typen die terug komen vanuit een zoekopdracht?
Hoe kom ik aan WooCommerce productgegevens voor mijn snippets?
Een overzicht hoe je het best het $product object kan benaderen in verschillende situaties.
Password Change notificaties onderdrukken in WordPress
Voorkom dat je een email krijgt iedere keer wanneer iemand zijn wachtwoord aanpast.
Stuur je bezoeker naar een 'dank je' pagina na commentaar
In enkele regels stuur je je bezoeker naar een 'bedankt pagina'.
WooCommerce tabbladen onder elkaar zetten
Heb je wel eens een grote webshop gezien met product tabs? Precies. En daarom willen wij onze 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