Complexe webshop met WooCommerce
De vraag of WordPress samen met de WooCommerce plugin wel geschikt is voor een complexe webshop, is eigenlijk geen technische vraag, maar een commerciële. Want welk stuk gereedschap ook wordt gekozen, het invoeren van productvariabelen en de formules om de prijs per product te berekenen, bepalen de prijs van de webshop.
Je vergist je gauw als een klant zegt: ‘Ik wil een eenvoudig webshopje, wat kost dat?’. De klant heeft doorgaans geen idee welke hoeveelheid formulewerk er gaat zitten in ogenschijnlijk eenvoudige producten met nogal wat variabelen. Ten eerste loop je binnen WooCommerce zelf al gauw tegen beperkingen aan, als die variabelen ook nog eens conditioneel zijn. Zoiets als ‘als je optie A hebt gekozen, dan verschijnen de mogelijkheden 1, 2 en 3, heb je optie B gekozen, dan verschijnen de mogelijkheden 4,5,en 6. Webshop specialisten zeggen dan al gauw de stap te nemen richting Magento, een opensource oplossing voor vooral grote webshops. En die grootte is nu juist vaak het probleem niet, maar de complexitiet van het maken van formules. WooCommerce is een prima (gratis) basis, maar vergt bij complexere berekeningen extra functionaliteit.
Gravity Forms
De basis om tot een compleet formulier te komen, waarin conditionele berekeningen kunnen worden gemaakt, wordt gevormd door de Gravity Forms plugin. Deze universele plugin is eveneens uitstekend geschikt voor contact formulieren, meer pagina formulieren en formulieren met conditionele vragen. De koppeling met WooCommerce wordt gerealiseerd door de zogenaamde Gravity Forms add-on. Deze verbinding zorgt ervoor dat een Gravity Forms formulier ingepast wordt in de prijsberekening van een product in WooCommerce.
Het proces
De elementaire keuze om alle producten met formulieren te berekenen is de belangrijkste keuze. Daarmee maak je de opzet van de webshop uniform. Dat betekent dat je binnen WooCommerce zelf alleen de productnaam en de product omschrijving maakt binnen een zogenaamde ‘simpel product‘, waarbij je de prijs op ‘0‘ zet. Al het overige gebeurt in een Gravity Forms formulier. Formulieren staan los van producten en worden alleen in de WooCommerce productomschrijving gekoppeld. Het is raadzaam consequent te zijn in de benamingen van producten en daarbij horende formulieren.
In de formulieren kan je gebruik maken van alle basisvelden, maar er zijn twee velden, die noodzakelijk zijn voor de koppeling met WooCommerce:
- product (voor elke (!) prijsvariatie wordt een productveld gebruikt)
- totaal (optelsom basisprijs en alle variaties, zie in rechterafbeelding, prijs in het groen)
Het eerste veld moet ingesteld worden als calculatieveld, de berekening aldaar bestaat uit de formule samengesteld uit velden, die de productvariaties voorstellen. Het tweede veld is het totaalveld welke de uiteindelijke prijs aan WooCommerce ‘doorgeeft’.
Bij veel variaties zijn er dus veel ‘product’ velden, die allemaal conditioneel zijn binnen de te maken keuzes. Als er dus 3 keuzes zijn, dan zal elk product veld ook conditioneel met 3 keuzes moeten zijn voorzien om alleen dan de berekende prijs te laten zien als aan alle condities zijn voldaan. Het instellen van de condities doe je bij de tab ‘geavaneerd‘ en je kiest voor ‘conditionele logica instellen‘. In feite is dat de belangrijke meerwaarde van de koppeling van WooCommerce met Gravity Foms. Binnen een standaard WooCommerce installatie kan je wel diverse keuzes maken voor variaties, maar je kunt geen conditionele keuzes maken, waarbij de volgende keuze afhankelijk is van de vorige.
Het maken van de formules is eveneens een taak die een gedegen voorbereiding vereist. Bij relatief weinig variaties is het invoeren van een statische prijs te doen. Bij prijswijzigingen zijn dan slechts een gering aantal wijzigingen noodzakelijk. Maar bij heel veel basisprijzen, dus bijvoorbeeld bij staffels, is de toepassing van factoren van het overwegen waard. Alle onderliggende prijzen veranderen dan automatisch als de basisprijs wordt aangepast en eventuele factoren voor de variaties.
Overwegingen
Het is belangrijk vooral verwachtingspatronen vooraf goed te bespreken met de opdrachtgever. Wat ogenschijnlijk voor de opdrachtgever als een ‘eenvoudige webshopje’ kan worden gezien (hij heeft immers de ervaring met zijn eigen producten), kan aan de achterzijde van de webshop al gauw resulteren in een complex geheel met veel variabelen, condities en formules. Het kan allemaal binnen de bovengeschetste combinatie, het kost echter tijd. Tijd die veelal vooraf lastig kan worden ingeschat en achteraf moeilijk even op nacalculatie kan worden gefactureerd.
Onderhoud
Ook moet de opdrachtgever zich realiseren dat WordPress als opensource CMS natuurlijk bepaalde gevoeligheden kent in combinatie met plug-ins en add-ons. Het is aan te bevelen voorzichtig omgaan met al te snel updaten van WooCommerce, Gravity Forms en de Gravity Forms add-on. In die zin moet de opdrachtgever goede voorlichting krijgen om al dan niet de totale achterliggende techniek zelf te willen onderhouden of dit uit te besteden.
Conclusie
Ook voor een complexe webshop hoef je niet meteen de stap te nemen naar dedicated opensource webshop gereedschappen, zoals Magento. De combinatie website/webshop door middel van WordPress met aanvullende gereedschappen is prima te doen. Maar het is geen klusje voor tussendoor. Overleg goed alle stappen met de opdrachtgever en splits de offerte op in delen om de verschillende kosten componenten duidelijk te maken.