WordPress template voor reacties

Geschreven door Jasper Denker van de Cursus Website Maken

Voor versie 3.0 van WordPress was het toevoegen van een reactieformulier in een thema redelijk ingewikkeld. Zeker als je een Nederlandstalig thema wilt maken, waren aanpassingen moeilijk te maken. Sinds versie 3.0 is hier een oplossing voor, de functie comment_form().

De code welke de reacties gaat weergeven plaatsen we in een nieuw bestand: comments.php. Deze voegen we toe in single.php door de volgende regel toe te voegen op de plek waar we willen dat de reacties verschijnen:

<?php comments_template(); ?>

In feite zorgt de functie comments_template() ervoor dat het bestand comments.php wordt opgenomen. Om een ander bestand te gebruiken, kun je de bestandsnaam als parameter opnemen in de functie, bijvoorbeeld comments_template(‘comments-2.php’).

We gaan nu kijken naar de inhoud van comments.php. Grofgezegd bestaat dit bestand uit twee delen, het weergeven van de reacties en het plaatsen van een formulier waarmee nieuwe reacties geplaatst kunnen worden.

Reacties weergeven

We gebruiken WordPress’ functie wp_list_comments() om de reacties weer te geven. Door middel van een array kun je deze functie enkele parameters meegeven, we bespreken ze hieronder.

avatar_size – Met avatar_size kun je aangeven welke grootte de avatars moeten krijgen. Wanneer deze optie niet wordt ingevuld wordt een grootte van 32 pixels bij 32 pixels gebruikt. De maximale waarde is 512.
style – De functie laat de reacties zien op een bepaalde manier. Met style kun je aan geven of dit moet door middel van een ‘<div>’ om de reacties heen of met een geordende lijst (ol) of ongeordende lijst (ul). Standaard wordt ‘ul’ gebruikt. Waardes die je kunt invullen zijn ‘ul’, ‘ol’ en ‘div’.
type – Geeft aan welke soort reacties weergegeven moeten worden. Opties zijn ‘comment’ om de gewone reacties te laten zien, ‘trackback’ voor trackbacks en ‘pingback’ pingbacks. ‘pings’ wordt gebruikt om zowel trackbacks als pingbacks weer te geven. ‘all’ is de standaardwaarde welke alles laat zien.
reply_text – De tekst die moet weergegeven aan gebruikers waarmee ze op een reactie kunnen reageren. Standaard is ‘Reply’.
login_text – De tekst die moet weergegeven worden wanneer een gebruik ingelogd moet zijn om te kunnen reageren. Standaard wordt ‘Log in to Reply’ weergegeven.
callback – Met de parameter callback kun je een eigen functie opgeven waarmee je een enkele reactie wilt weergeven. Deze optie openlaten zorgt ervoor dat WordPress haar eigen functie gebruikt, wat aan te raden is.
reverse_top_level – Wanneer deze waarde ‘true’ is worden de meest recente reacties bovenaan weergegeven in plaats van onderaan.
reverse_children – Hetzelfde als reverse_top_level, maar dan voor de reacties op reacties.

Reactieformulier

We gebruiken de functie comment_form() om het formulier weer te geven waarmee gebruikers reacties kunnen achterlaten. Net als wp_list_comments() kunnen we deze functie aanpassen door middel van enkele parameters. We bespreken ze hieronder:

comment_field – De code welke wordt gebruikt om het veld weer te geven met de inhoud van een reactie.
Bijvoorbeeld:

<p><label for="comment">Reactie:</label><textarea name="comment"></textarea></p>

must_log_in – De tekst die moet weergegeven aan gebruikers wanneer ze ingelogd moeten zijn om te kunnen reageren.
Bijvoorbeeld:

<p>Je moet ingelogd zijn om te kunnen reageren.</p>

logged_in_as – Laat zien welke gebruiker is ingelogd.
Bijvoorbeeld:

<p>Je bent ingelogd als' . $user_identity . '</p>

comments_notes_before/comments_notes_after – Code welke wordt weergegeven voor en na de invulvelden van het formulier.
id_form – Het id welke de <form> tag moet krijgen.
id_submit – Het id welke de <input type=”submit”> button moet krijgen.
title_reply – De titel van het formulier. Bijvoorbeeld ‘Laat een reactie achter’.
title_reply_to – De titel van het formulier wanneer wordt gereageerd op een reactie. Bijvoorbeeld: ‘Reageer op %s’. %s wordt hierbij vervangen.
cancel_reply_link – Tekst die moet weergegeven worden om een reactie te annuleren. Bijvoorbeeld: ‘Annuleer reactie’.
label_submit – De tekst van de submit button. Bijvoorbeeld: ‘Plaats reactie’.
fields – Bevat een array met drie waardes waarin de velden voor de naam, email en website van de reageerder zich bevinden.
Bijvoorbeeld

'array('author' => '<p><label for="author">Naam: </label><input name="author" value="' . $commenter['comment_author'] . '" /></p>', 'email' => '<p><label for="email">Email: </label><input name="email" value="' . $commenter['comment_author_email'] . '" /></p>', 'url' => '<p><label for="url">Website: </label><input name="url" value="' . $commenter['comment_author_url'] . '" /></p>')';

Comments.php

Comments.php zou dus heel eenvoudig door middel van de twee functies gemaakt kunnen worden:

<?php wp_list_comments(); ?>
<?php comment_form(); ?>

Op deze manier worden alle (Engelse) standaard waardes gebruikt. We maken comments.php in het Nederlands om te kijken hoe we alle waardes kunnen gebruiken, zie onderstaand voorbeeld.

<?php

$args_list_comments = array (
	'style' => 'ol',
	'type' => 'all',
	'reply_text' => 'Reageer',
	'login_text' => 'Log in om te kunnen reageren'
);

$args_comment_form = array (
	'fields' => array(
		'author' => '<p><label for="author">Naam: </label><input name="author" value="' . $commenter['comment_author'] . '" /></p>',
		'email' => '<p><label for="email">Email: </label><input name="email" value="' . $commenter['comment_author_email'] . '" /></p>',
		'url' => '<p><label for="url">Website: </label><input name="url" value="' . $commenter['comment_author_url'] . '" /></p>'
	),
	'comment_field' => '<p><label for="comment">Reactie:</label><textarea name="comment"></textarea></p>',
	'must_log_in' => '<p>Je moet ingelogd zijn om te kunnen reageren.</p>',
	'logged_in_as' => '<p>Je bent ingelogd als' . $user_identity . '</p>',
	'title_reply' => 'Laat een reactie achter',
	'cancel_reply_link' => 'Annuleer reactie',
	'label_submit' => 'Plaats reactie',
	'comment_notes_before' => 'Vul je gegevens in en klik op 'Plaats reacte'',
	'comment_notes_after' => 'In je reactie kun je gebruik maken van de volgende tags <code>' . allowed_tags() . '</code>'
);

?>

<ol id="comments"><?php wp_list_comments($args_list_comments); ?></ol>

<div id="reageer"><?php comment_form($args_comment_form); ?></div>

Je kunt weer het voorbeeld downloaden om deze live te kunnen bekijken. Hierin is ook CSS toegevoegd om de reacties wat netter weer te geven.

Tot zover alweer voor dit deel uit de minicursus waarin je een WordPress thema leert maken. In het laatste deel gaan we kijken naar het maken van een zoekpagina en we kijken hoe het toevoegen van widgets in zijn werk gaat.

5 Reacties

Een reactie achterlaten

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *