Custom Post Types registreren in plugin of functions.php

Na het publiceren van de WordPress Custom Post Type handleiding, heb ik hier een aantal vragen over ontvangen. Eén van de meest gestelde was over de manier waarop je Custom Post Types aanmaakt. Doe je dat in functions.php of maak je er een plugin voor?

Om te bepalen of functionaliteit (in dit geval de Custom Post Types) in het thema thuis hoort in de vorm van functions.php, of als plugin, moeten we bepalen of deze functionaliteit bij het thema hoort of niet. Als de CPT onlosmakelijk met het thema is verbonden, dan is functions.php de plek voor de CPT registratie. Let wel dat bij het wisselen van thema de CPTs niet meer te zien zijn in het nieuwe thema, omdat daar simpelweg geen rekening mee is gehouden. Het thema moet aangepast worden. Bij gebruik van een plugin voor de CPT registratie, waarbij ook de weergave is geregeld, hoeft hoogstens de CSS aangepast te worden.

In een plugin, waarbij de CPT registratie code gezet wordt, kan je alles kwijt mbt registratie en weergave. Je hoeft dus niks in het thema aan te passen. Deze oplossing heeft mijn voorkeur, omdat de CPTs zo thema-onafhankelijk zijn in te zetten.

Technisch gezien maakt het niet uit waar je de code neerzet. Code in de functions.php en ook in de (geactiveerde) plugins wordt bij elk request uitgevoerd. Het zal dus geen verschil uit maken qua performance.

Naast het zelf coderen, kan je ook gebruik maken van een plugin om de CPT aan te laten maken. Als je zelf niet in PHP aan de slag wil is dat een handige oplossing. Enkele plugins: