Peter is een serie in elkaar aan het draaien over PivotX templates, en hoe WordPress designers daar wijs uit kunnen worden. Door de manier waarop hij het schrijft is het net zo goed andersom te gebruiken, en ik heb weer wat dingen over PivotX geleerd -- dat ze de Smarty-engine gebruiken bijvoorbeeld. Grappig.

Uiteraard heb ik ook wel iets te mekkeren, een paar ietsen zelfs.

Allereerst vraag ik me af waarom hij de daadwerkelijke info in een Google Doc heeft gehangen. Ik zie geen dingen gebeuren die niet gewoon in HTML zouden kunnen, met als toegevoegd nadeel dat Google Docs niet worden geïndexeerd door zoekmachines. Jammer, want het is nuttige informatie.

Inhoudelijk had ik ook wel een paar aanmerkingen. Voor ik daar aan begin wil ik wel even duidelijk maken dat ik dat niet met een "OMG n00b" houding wil brengen; ik ben al lang genoeg met WordPress bezig om dat soort dingen te weten, maar dat ga ik niet van iedereen verwachten; bovendien is het nodige ook gewoonweg slecht gedocumenteerd in de Codex. Ik probeer mijn fanboy-pet dus even af te zetten en neutraal te kijken. =]

Daar gaan we dan:

The Loop

In bijna alle voorbeelden die Peter geeft, zie ik een if (have_posts()) terugkomen. Die staan ook overal in de voorbeelden op de Codex, maar het is al een tijd niet meer nodig -- uit mijn hoofd vanaf twee-punt-zoveel, maar de precieze versie moet ik even schuldig blijven. Het punt is: have_posts evalueert in theorie altijd naar true; zou dat niet het geval zijn, dan wordt er een andere template gebruikt (404.php) om een foutmelding te geven.

Vroeger was dat anders, toen bestond de code uit een if (have_posts()) gevolgd door een foreach(), en werd die foutafhandeling niet gedaan. Toen kon het dus wel degelijk voorkomen dat er geen posts waren, en dan geeft foreach() een foutmelding.

Jammergenoeg is de Codex nog niet aangepast, en worden nog overal die overbodige ifjes neergegooid. Alsof het allemaal maar niks kost.

Een ander puntje wat ik een beetje vreemd vond, was het "tonen van posts in een bepaalde categorie". Peter doet het in zijn voorbeeld door in de loop te controleren of een post tot de categorie behoort, en zo nee, met een continue naar de volgende te springen. Hij zet daar als -- terechte -- kanttekening bij dat dat een inefficiënte methode is.

Niet nodig bovendien, en dat zou Peter eigenlijk ook moeten weten. Even later heeft hij het namelijk over "meerdere loops", en daar gebeurt precies hetzelfde, maar dan op de "goede" manier: een nieuwe query waarin specifiek posts in een bepaalde categorie worden opgehaald, en er dus niets wordt verspild.

Comments

Ook hier weer de if-constructie om te controleren of er comments zijn; iets dat in zijn PivotX-voorbeeld niet gebeurt. Wat ik me dan afvraag: hoe handelt PivotX dat precies af? Het zal via Smarty te controleren zijn, maar het was leuk geweest als hij dat er even bijgezet had.

Wat ik slordiger vond was de bewering dat de controle of comments.php direct wordt aangeroepen zou zijn omdat het posten van comments door die file gebeurt. Waar hij dat vandaan haalt is me een raadsel, en het is ook beslist niet hoe het werkt. Comments worden afgehandeld door wp-post-comments.php, niet door een template.

Heel eerlijk gezegd is het me net zo goed een raadsel waarom die controle er nog staat, want als je de file direct zou aanroepen krijg je gewoon wat errors, net als de meeste andere bestanden uit een theme. Lijkt mij ook een overblijfsel uit vroegere tijden; nodig is het voor zover ik weet niet.

De controle of een post wachtwoord-beveiligd is, zou dat eigenlijk ook niet moeten zijn; dat zou eleganter opgelost worden door bij een wachtwoord-beveiligde post gewoon heel de comments-template achterwege te laten als het wachtwoord niet is opgegeven. Minder gedoe in de templates, minder wat er dus mis kan gaan.

Het invullen van een e-mailadres, tenslotte, is niet altijd verplicht. Die instelling kun je zelf maken in het backend, en hoewel het standaard wel aanstaat, kun je het net zo makkelijk weer uitzetten.

En verder?

Los daarvan vind ik het een zinvol document; ik leer er weer wat bij over Pivot -- bijvoorbeeld dat de templates op Smarty lopen; ik had geen idee dat het zo was, en het is zeker een hele goede engine. Persoonlijk vind ik het juist wel fijn dat WordPress vrij standaard PHP gebruikt -- als je weet wat je doet, kun je veel uitgebreider wroeten -- maar ik kan me heel goed voorstellen dat Smarty voor een hoop, zo niet de meeste, mensen veel makkelijker onder de knie te krijgen is. Het oogt lekker schoon ende overzichtelijk.

Minstens zo interessant is het om eens met een andere blik te kijken naar dingen die je al heel lang wel gezien, maar niet echt gezien hebt, zoals die controles aan het begin van comments.php, en het feit dat je eerst werk moet verzetten voor Akismet zijn werk gaat doen.

Dat is inderdaad best wel mal, eigenlijk, maar niet iets waar je dagelijks bij stilstaat als je blog al een paar jaar loopt. Goed, aanmelden voor Akismet gaat vrij makkelijk, en de bescherming is goed, maar het zou minder moeite van de gebruiker moeten kosten.

Waar het ook nogal aan ontbreekt is documentatie. De Codex is groot, erg groot, maar een hoop informatie is incompleet, incorrect of verouderd. Eerlijk gezegd denk ik dat dat nog wel een veel groter probleem is, en bovendien niet zomaar op te lossen.

Ga ik nu terstond WordPress dumpen? Nee, natuurlijk niet. Ik blijf echter wel Peters serie volgen (en ik hoop dat hij er ook nog een over plugins doet), want er valt nog genoeg te leren. Al is het alleen maar door weer eens bewust naar "vanzelfsprekende" zaken te kijken.