Bij het schrijven van code is het belangrijk om een bepaalde logica te volgen. Op deze manier kunnen we elkaars code begrijpen en hierop verder bouwen. Daarnaast is het eenvoudiger om deze code te onderhouden en voorkomt het maken van fouten. Het spreekt voor zich dat dit voor een open source systeem zoals WordPress extra belangrijk is. In het WordPress handboek worden deze standaarden beschreven. Zo zijn er instructies voor het schrijven van PHP, HTML, CSS en javascript.
In de praktijk blijkt het volgen van deze standaarden uitdagend. Naast de bouw van eigen thema’s krijgen we ook veel te maken met thema’s van andere partijen. Ik ben tot dusver weinig tot geen WordPress thema’s tegen gekomen die voldoen aan deze standaarden. Laten we eens de vijf meest gemaakte fouten onder de loep nemen.
Niet ge-escapte code
Escapen is een erg belangrijk onderdeel voor veilige code. Kwaadwilligen kunnen niet ge-escapte code als backdoor gebruiken om bepaalde scripts op je website uit te voeren. WordPress biedt een aantal handige functies voor het escapen van je code. Veel gebruikte functies zijn:
- wp_kses
- esc_html
- esc_attr
- esc_url
- esc_html__
- esc_html_e
Deze functies zijn er niet voor niks. Gebruik ze!
Onjuist inspringen van code
Het inspringen van je code is belangrijk voor de leesbaarheid van de code. Veel te vaak kom ik nog thema’s tegen waarbij tabs, enters en spaties door elkaar worden gebruikt zonder enige mate van structuur. De WordPress coding standards zijn hier duidelijk over.
Gebruikt tabs voor het inspringen van je code. Gebruik spaties om een blok code leesbaarder maken. In het geval van een array kun je dus spaties gebruiken om de code netjes uit te lijnen.
if ( true ) { $array = array( 'first' => 'Some value', 'second' => 'Some other value', 'third' => 'The last value', ) }
Onjuist spatiegebruik
Ik noemde het hiervoor ook al even in combinatie met het onjuist inspringen van code. Het spatiegebruik is voor andere onderdelen echter ook belangrijk. Gebruik bijvoorbeeld altijd spaties na een komma en aan beiden kanten van een vergelijking, string of logical operator. Hieronder een voorbeeld van hoe dit spatiegebruik toegepast moet worden.
if ( isset( $some_variable ) ) { foreach ( $elements as $element ) { echo esc_html( $element->ID ); } }
Verkeerde naamgevingen
Een WordPress thema heeft een naam. Gebruik deze naam dan ook in je hele thema. Prefix al je thema functies en maak gebruik van het juiste text domein. Ik kom vaak thema’s tegen waarbij functies niet geprefixed worden of waarbij nog het twentytwelve textdomein terugkomt.
Gebruik de Yoda notatie
Yoda is een programmeerstijl waarbij de twee delen van een expressie worden omgekeerd ten opzichte van de standaard volgorde in een conditional statement. Bij een yoda condition wordt de constante dus aan de linkerkant geplaatst in plaats van rechts. Dit bevordert de leesbaarheid en verkleint de kans op fouten.
if ( 'bla' === $some_variable ) { echo 'Do something'; }
In de praktijk
Ik heb in deze blog de meest voorkomende fouten behandeld. Dit is slechts een klein gedeelte. In de praktijk kom ik nog veel meer fouten tegen:
- Het aantal posts_per_page staat op oneindig
- Onjuist gebruik van quotes en double quotes
- Overmatig gebruik van taxonomy queries
- GET en POST data is niet gesanitized
- Gebruik van PHP shorthand functie
- Niet gebruik maken van de wpdb functies voor custom database queries
- Onnodig gebruik van de extract functie
Wij leveren alleen thema’s op die volledig voldoen aan de WordPress coding standards. Codesniffer is een prachtige tool om de code te testen. Met behulp van een grunt task kunnen we het volledige thema testen op de meest recente WordPress standaarden. Bij het testen van willekeurige standaard WordPress thema’s komen we gemiddeld meer dan >1000 fouten per thema tegen.
Benieuwd of jouw thema voldoet aan de WordPress coding standards? We zoeken het graag voor je uit.