WordPress
Sjabloonhiërarchie
Zoeken…
Opmerkingen
Plug-ins voor foutopsporing in WordPress:
Invoering
Een van de belangrijkste dingen om te leren wanneer u een WordPress-thema maakt, is de WordPress-sjabloonhiërarchie voor thema's. De sjabloonhiërarchie bepaalt welk sjabloonbestand voor elke aanvraag wordt geladen en in welke volgorde. Als de eerste sjabloon niet bestaat in de hiërarchie, probeert WordPress de volgende sjabloon te laden, enzovoort, totdat je in index.php
.
Om de sjabloonhiërarchie in detail te beschrijven, is de beste manier natuurlijk om een afbeelding met de volledige structuur te gebruiken:
De sjabloonhiërarchie begint met de primaire paginatypen zoals archief, enkelvoudige pagina of voorpagina en vervolgens de subtypen zoals auteursarchief, tagarchief, pagina of blogbericht.
Hierna vinden we de werkelijke sjablonen die worden geladen. Allereerst zijn er de meest specifieke sjablonen die naaktslakken of ID's gebruiken om specifieke archieftypen of berichten te targeten.
category-$slug.php
die bijvoorbeeld alleen de categorie met een specifieke slug target, bijvoorbeeld category-books.php
zou alleen worden gebruikt voor de categorie met het slug- book
. Een ander voorbeeld is page-$id.php
die alleen een pagina met een specifiek ID target, bijvoorbeeld page-41.php
zou alleen de pagina met ID 41 targeten.
Na de sjablonen die specifieke typen of berichten targeten, komen we bij de generieke type sjablonen, zoals archive.php voor alle archiefpagina's of page.php
voor alle pagina's. Maar vergeet niet dat deze alleen worden gebruikt als de huidige pagina niet overeenkomt met een van de sjablonen die hoger in de hiërarchie staan.
Ten slotte, als WordPress geen overeenkomende sjablonen in de sjabloondirectory kon vinden, is de laatste fallback altijd index.php
, het enige vereiste sjabloonbestand in een WordPress-thema.
Debugging
Het is gemakkelijk om te verdwalen tijdens het debuggen van de hiearchie. U kunt PHP's ingebouwde opdracht debug_backtrace
.
Plaats het volgende fragment in een sjabloon dat u wilt debuggen en bekijk de gegenereerde pagina:
<!--
<?php print_r( debug_backtrace() ) ?>
-->