WordPress als volwaardig CMS: zelf custom post types programmeren, een code generator of een plug-in?

Voor de gemiddelde WordPress gebruiker bestaan er pagina’s en berichten, twee content types, die voor veel toepassingen voldoende zijn naast natuurlijk mediabestanden, gebruikers(rechten) en wat meta data bij berichten en pagina’s. Om een volwaardig CMS te kunnen bouwen zijn ‘eigen’ content types nodig die voorzien van eigen taxonomieën (categorieën en/of tags) en ‘eigen velden’, die de functionaliteit van WordPress aanzienlijk uitbreiden.

• Lees voor basis achtergrond technieken de WordPress Codex
• Plugins als WooCommerce (webshop) of EventsManager (agenda) verzorgen naast de ingebouwde CPT aanmaak ook voor de complete gewenste functionaliteit

De motor onder WordPress biedt al deze mogelijkheden, maar om de user-interface voor de gemiddelde gebruiker relatief makkelijk te houden zijn er drie methoden om custom post typs (CPT’s) en custom fields (CF’s) aan het datamodel toe te voegen:

  • zelf programmeren
  • een code generator gebruiken
  • of een plugin installeren

Om bijvoorbeeld een webshop te kunnen maken heb je een CPT nodig om producten te kunnen aanmaken. naast de titel en de beschrijving (te vergelijken met een gewoon bericht), zijn naast een eigen ‘post’ type ook custom fields (CF’s) nodig, voor bijvoorbeeld het kunnen invoeren van een prijs van het product.

1. Zelf Programmeren
Ervaren PHP programmeurs zullen altijd de voorkeur geven aan het zelf programmeren van deze functionaliteit. Zowel de aanmaak van CPT’s, CF’s en de functies om bijvoorbeeld berekeningen te kunnen maken, worden door een PHP specialist veelal geïntegreerd in een aantal bestanden die deel uitmaken van een WordPress theme. Door dat in een zogenaamd ChildTheme te doen, voorkom je dat bij een update van het basistheme de extra fucntionaliteit verloren gaat. Als argument noemen de programmeurs de netheid van de code, de compactheid van de code en derhalve de performance van de site in zin geheel.

2. Een code generator gebruiken
generatewpAls je wat minder van PHP zelf weet, maar wel weet waar je gegenereerde code moet plaatsen in de theme files, dan is een code generator een alternatief. Een heel fraai voorbeeld is generatewp. Naast CPT’s zijn vele gereedschappen beschikbaar om ‘eigen’ code te laten genereren. cptZelfs een wp-config.php file kan helemaal op maar worden geoptimaliseerd en gaat in vele opzichten verder dat de standaard aanmaak vanuit de WordPress installatie zelf. Het maken van CPT’s verloopt in een aantal logisch te doorlopen stappen en de generator maakt precies de juiste code, die gebruikt kan worden in een plugin of binnen een theme (afhankelijk van het doel). Andere voorbeelden van code generatoren staan vermeld bij themergency.

3. Gebruik maken van een plugin (die de CPT meteen aanmaakt in de SQL database, samen met een user interface)
podsAl eerder maakt ik een artikel rondom Types (aanmaak en verwerking CPT’s en CF’s) en later ook over het daarbij horende Views (weergave van alle WordPress content, dus inclusief CPT’s en CF’s) Er zijn talloze plugins die het mogelijk maken CPT’s, CF’s en hun taxonomieën aan te maken. Eén van de laatste voorbeelden die ik op dat gebied tegenkwam was Pods. Een indrukwekkende hoeveelheid screenshots laat een fors aantal mogelijkheden zien.

De discussie over welke richting de juiste is, heeft binnen de ontwikkeling van een website veel te maken met beschikbare budgetten. Klanten verwachten nu eenmaal doordat ze steeds vaker ‘speciale’ dingen zien, dat deze ook voor vrijwel geen meerkosten beschikbaar zijn. Derhalve is handmatig programmeren minder makkelijk in uren te verkopen, tenzij het product achteraf meermalen te verkopen is (bijvoorbeeld dan toch weer als een plugin). Een code generator kan een goed alternatief zijn, vooral als je wilt voorkomen dat je klant, die volledige admin toegang eist, zelf ‘aan de slag’ zou kunnen gaan en (per ongeluk) schade kaan aanbrengen aan de structuur. Dat laatste kan makkelijk gebeuren bij de installatie van geavanceerde plugins. Issues rondom de performance van eigen gemaakt code versus een plugin zijn zeer divers. Niet elke plugin ontwikkelaar programmeert even netjes en niet elke betaalde plugin is automatisch beter. Kortom, de keuze is vooral afhankelijk van budget, kennis en kunde in relatie tot de wens van de klant.