Inspiratie: Gratis WordPress themes

Als je begint met een WordPress weblog wil je natuurlijk wel een hip design hebben. Op de site van WordPress zelf kun je echter alleen zoeken op bepaalde trefwoorden en is het lastig om mooie ontwerpen te vinden. Regelmatig kom ik artikelen tegen met ‘lijstjes’ met mooie WordPress themes. Nu heb ik een lijstje gemaakt met een aantal pagina’s waar je leuke, gratis WordPress themes kunt vinden.

Sommige (lees: de mooiste) themes zul je natuurlijk vaker terug zien komen in de lijstjes omdat de lijstjes van verschillende bronnen komen…

Als je alleen inspiratie op wil doen en zelf je eigen theme wil maken, zou je hier eens kunnen kijken:

Succes!

WordPress 2.7: Reageren op reacties

Vorige week kwam versie 2.7 van de populaire blog-software WordPress uit. Zo op het eerste gezicht is er voor de bezoeker van WordPress-blogs weinig veranderd. De blogger zelf ziet grote veranderingen in het beheer van het weblog. De interface heeft een complete make-over gekregen en er zijn weer meer mogelijkheden bijgekomen. Eén van de nieuwe mogelijkheden van WordPress 2.7 is “Enhanced comments”, dat inhoudt dat je kunt reageren op reacties. Voorheen kon dit alleen met externe plug-ins en ook dat werkt meestal niet optimaal…

Het nadeel is echter dat de meeste (gratis) WordPress thema’s dit nog niet ondersteunen. Om deze reden zal ik hier stapsgewijs uitleggen hoe je je thema moet aanpassen om hier gebruik van te kunnen maken. Afhankelijk van het thema dat je gebruikt zou het kunnen dat je zelf ook nog wat aanpassingen in de CSS van je thema moet doen. Ik ben er wel vanuit gegaan dat je iets weet van WordPress thema’s.

Stap 1: Maak een backup van je thema / template!!

Stap 2: Stel bij Settings -> Discussion in dat je van Enhanced Comments gebruik wil maken. Het aantal niveaus kun je zelf bepalen. Ik heb deze instelling zelf op 3 niveaus staan.

Header.php

Stap 3: Voeg de volgende code toe aan header.php, voordat wp_head() aangeroepen wordt:

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

Deze code voegt Javascript aan de pagina toe die ervoor zorgt dat de bezoeker kan reageren op een reactie zonder de pagina te verlaten (lees: zonder een nieuwe pagina te hoeven openen)

Comments.php

Stap 4: Er is een nieuwe functie om reacties weer te geven. Open comments.php en zoek het stuk code dat lijkt op het volgende:

<ul class="commentlist">
<?php foreach( $comments as $comment ) :
// hier de code die per reactie wordt weergeven
endforeach; ?>
</ul>

In WordPress 2.7 kan dit korter. Gebruik de volgende code:

<ul class="commentlist">
<?php wp_list_comments(); ?>
</ul>

Informatie over de wp_list_comments()-functie kun je hier vinden. Let ook vooral op het ‘callback-argument’. Hier kun je alsnog de opmaak van je comments handig kwijt, daar kom ik op terug in stap 10.

Stap 5: Om ervoor te zorgen dat de Javascript – die wordt gegenereerd door de code die je hebt toegevoegd in stap 3 – werkt moet het reactieformulier in een div met als id “respond” worden geplaatst:

<div id="respond"><!-- hier het formulier --></div>

Stap 6: De titel boven het reactieformulier luidt meestal “Leave a reply” of “Plaats een reactie”. Je kan nu ook een titel instellen die verschijnt als de bezoeker reageert op een reactie.

Als het goed is staat er zoiets:

<h3>Leave a reply</h3>

En dat kun je vervangen door:

<?php comment_form_title( 'Plaats een reactie', 'Reageer op %s' ); ?>

Als de bezoeker dan reageert op een reactie komt er “Reageer op [naam van degene waar je op reageert]” te staan.

Stap 7: Plaats binnen het formulier de volgende code:

<?php comment_id_fields(); ?>

Deze code maakt een ‘hidden field’ aan waarmee het ID van de reactie waar de bezoeker op reageert wordt meegestuurd.

Stap 8: Zorg dat het tekstvak waar de bezoeker de reactie in kan typen het ID “comment” heeft.

Stap 9: Als de bezoeker op “Reageer op reactie” klikt wordt de titel van het formulier aangepast (“Reageer op [naam]” in plaats van “Plaats een reactie”) en wordt het ID van de reactie waar hij/zij op reageert in een ‘hidden field’ van het formulier geplaatst. De bezoeker de mogelijkheid te geven om dit te annuleren doe je met de volgende code:

<div id="cancel-comment-reply">
<small><?php cancel_comment_reply_link() ?></small>
</div>

Mocht je het handig vinden: mijn comments.php

Functions.php

Stap 10: In stap 4 heb je de wp_list_comments()-functie toegevoegd aan comments.php. Deze functie handelt het weergeven van de reacties af. Met het callback-argument kun je de opmaak per reactie instellen.
k roep wp_list_comments() op deze manier aan:

<?php wp_list_comments(array('type'=>'comment', 'avatar_size'=>60,
'reply_text'=>'Reageer op deze reactie', 'callback' =>'mytheme_comment',
'style' => 'ul')); ?>

Type, avatar_size, reply_text en style spreken volgens mij voor zich. Het callback-argument verwijst naar een functie waarin ongeveer de code staat die ik in de stap 3 heb vervangen door de nieuwe functie. Deze functie heb ik aangemaakt in functions.php:

Zie hier mijn mytheme_comment()-functie

Het stuk code wat ik heb toegevoegd aan de oude code is:

<div class="reply"><?php comment_reply_link(array_merge( $args,
array('add_below' => 'comment', 'depth' => $depth, 'max_depth'
=> $args['max_depth']))) ?></div>

Met deze code wordt de “Reageer op reactie”-link aangemaakt, zie de WordPress Codex voor meer informatie over deze functie. Let ook op de missende <li>-tag op het einde. WordPress handelt dat verder zelf af.

Style.css

Stap 11: Eventueel aanpassen van de CSS van je thema.  Je zal zelf moeten kijken of dit voor jouw thema geldt. De code die ik heb toegevoegd is:

.comment .commentclear{
  padding-bottom: 10px;
  border-bottom: 1px solid black;
  margin-bottom: 10px;
}

.comment .children{
  margin-left: 50px;
}

Nogmaals, de links naar mijn stukjes code:

Functions.php
Comments.php

Meer informatie kun je ook vinden in het Engelstalige artikel van Otto.

Als het goed is heb je nu een werkende WordPress-weblog waarmee je bezoekers kunnen reageren op de reacties van andere bezoekers, gefeliciteerd!

Heb je vragen of opmerkingen? Ben ik iets vergeten wat je ook graag wil weten? Laat het dan even weten in de reacties hieronder. Je mag ook reageren op elkaar natuurlijk ;-)

Spyware in WordPress-themes?

Afgelopen week postte DailyM een stuk ‘geheime’ tracking code uit een WordPress thema op Flickr. Enorm geheim is deze tracking code niet maar als je geen verstand van PHP of programmeren hebt zul je ‘m niet snel tegenkomen. Deze code zat verstopt in het thema Cellar Heat, gemaakt door Evan Eckard.

Wat doet deze code?

De code controleert of het bestand whatwhat.css bestaat in de template-map. Als dit bestand aanwezig is zal de code dit bestand verwijderen (het bestand is leeg en wordt niet gebruikt dus dat geeft niet) en zal vervolgens een mail versturen naar cellarheat.theme@gmail.com. In deze mail staat op welke domeinnaam dit thema wordt gebruikt en in welke directory het thema geinstalleerd is.

Waarom gebruikt de maker deze code?

Evan gaf aan dat deze code veel gratis WordPress themes te vinden is en daar heeft hij gelijk in. Ik ben deze code (maar controleert dan op een andere bestandsnaam en verstuurt de mail naar een ander e-mailadres) al erg vaak tegenkomen in gratis themes. De reden dat de makers deze code gebruiken is dat ze graag willen weten hoe vaak hun thema geinstalleerd wordt. Dit aantal schijnt behoorlijk af te wijken van het aantal downloads. Dat is goed mogelijk want je zou je kunnen voorstellen dat je zo’n thema zou willen delen met vrienden via MSN of iets dergelijks.

Waarom is dit spyware?

De mening over de exacte definitie van ‘spyware’ wil wel eens verschillen, daarom zal ik mijn definitie geven:

Spyware is (een deel van) software die zonder medeweten van de gebruiker wordt geïnstalleerd en gegevens over het gedrag van de gebruiker registreert.

Ik ben tijdens het downloaden van een gratis thema nog nooit een waarschuwing tegengekomen dat er (eenmalig) een mail wordt verstuurd als het thema wordt geinstalleerd. Het installeren is het verslepen van de map van je computer naar de webserver dus daar kan ook geen melding worden weergegeven. Wat wel een oplossing voor de makers zou kunnen zijn is een melding weergeven in de omschrijving van het thema, maar dat ben ik tot dusver nog nooit ergens tegengekomen.

Het gevaar

In dit geval worden er geen ‘echte’ persoonsgegevens gestuurd naar de maker van dit thema maar dit zou technisch gezien wel kunnen.

Eigenlijk zijn er twee grote gevaren als je gratis WordPress thema’s installeert zonder eerst de code te controleren:

  • WordPress thema’s zouden persoonlijke gegevens uit je WordPress installatie (of webserver) naar iemand kunnen sturen;
  • WordPress thema’s zouden gebruik kunnen maken van je webserver om bijv. spam te versturen. Elke keer als een bezoeker een pagina aanroept zou het script bijvoorbeeld 100 mails naar willekeurig adressen kunnen versturen.

 

De oplossing voor de gebruikers

Als je geen verstand van PHP of programmeren hebt is het lastig te snappen wat de code in thema’s doet. Zelf controleren of er ‘kwaadaardige’ code instaat zal dus lastig blijven. Ook als je wel verstand van PHP of programmeren hebt zal het niet leuk zijn om de code na te lopen want het is wel tijdrovend. Wat ik wel aan kan raden is:

  • het thema altijd downloaden vanaf de site van de maker zodat niet iemand anders ‘kwaadaardige’ code heeft kunnen toevoegen
  • reacties van andere gebruikers over het thema nalezen
  • als het besturingssysteem het ondersteunt: zoeken op ‘mail’ in de inhoud van bestanden van het thema

Helemaal feilloos zal het niet zijn maar het is wel belangrijk om in elk geval op de hoogte te zijn van de risico’s. 

 

P.S. Evan Eckard heeft de tracking code uit zijn thema verwijderd na aanleiding van de afbeelding op Flickr. Hulde! Dit illustreert tevens nog eens het probleem: als je zijn thema niet vanaf zijn site maar vanaf een andere website download zal de tracking code er nog steeds inzitten.