Na een paar serieuze programmeersessies staan er eindelijk films op de website van mijn school, FiViKASKA.be. Allen daarheen dus.

‘t Heeft wel wat zweet gekost en ik ben ook niet zo zeker meer of de volgende iteratie van benderydt.com nog wel op WordPress zal draaien, maar dat zijn zorgen voor later. Als Django nu eens op shared webhosts zou draaien…

Kort gesteld ben ik de volgende vervelende zaken tegengekomen:

  1. Het is veel te moeilijk om WordPress’ admin scherm uit te breiden om een nieuw gegevenstype aan te maken. Ondanks alle hooks en filters kan je bijna niets veranderen aan wordpress/wp-admin/post.php, de plaats waar je nieuwe berichten ingeeft. Ik heb bijna de hele post.php-interface moeten dupliceren om daar een hoop dingen aan te kunnen toevoegen.
  2. Niets nieuws onder de zon, maar PHP is af en toe echt wel braindead. Kijk bijvoorbeeld naar deze tabel en probeer eens op één, twee, drie te bedenken hoe je test of er iets in een stringvariabele zit. if ($string)? Nope, dit faalt wanneer de string de waarde "0" bevat. if (isset($string))? Nee, want een lege string geeft ook TRUE bij isset. if (! empty($string))? Zelfde verhaal als bij if ($string), "0" geeft een vals negatief. De oplossing is if (strlen($string)) of if ($string !== ''). Intuïtief, nietwaar?
  3. WordPress heeft de abjecte en bijna misdadige gewoonte om bij aanvang van een request alle POST en GET variabelen te quoten zodat ze veilig in de databank kunnen weggeschreven worden. Abject omdat je telkens je iets met die variabelen wil doen ze moet ont-quoten om ze daarna terug te quoten. Bijna misdadig omdat core WordPress-functies als wp_insert_post niet meer checken of de input nog ge-quote-d moet worden, maar blindelings alles in de database dumpen, zelfs zonder foutboodschappen te checken (#6227). Dit wil zeggen dat eender welke plugin die deze functie(s) gebruikt zonder de input te quoten, een rechtstreekse input naar de database geeft. Denk aan input als hallo '; DROP DATABASE; en je database is weg. (WordPress core is OK omdat ze alles quoten.)

Daar staat tegenover dat, als het werkt, de admin-schermen van WordPress ook voor een leek bruikbaar zijn, en daar was het tenslotte allemaal om begonnen.