Op verzoek wat uitleg over het gebruik van eigengemaakte taxonomieën in WordPress.
Standaard zijn er twee methoden ontstaan om metadata aan een post toe te voegen op een weblog, naast de gebruikelijk ordening op datum, dus zo ook met WordPress. Zo’n tekst kan bij een categorie worden ingedeeld, of gelabeld worden met trefwoorden, de zogeheten ‘tags’.
Dit werkt op zich best, behalve als een weblog ouder wordt, en groter, en dan blijkt dat er weinig systeem zit in de gebruikte trefwoorden; zodat het voor bezoekers bijvoorbeeld moeilijk wordt om te zien of een bepaalde tag ooit gebruikt is.
WordPress heeft sinds een paar versies van de software terug daarom het hele metadata-systeem omgegooid. Het is nu vrij eenvoudig mogelijk naast de bestaande reeksen aan categorieën en trefwoorden daar nog éen of meer naast te zetten. Een probleem is wel dat deze mogelijkheden nog vrij slecht gedocumenteerd zijn.
Het enige wat er nodig is om de extra metadata over een tekst in de database te kunnen zetten, is het toevoegen van enkele regels code, aan de functions.php die het theme gebruikt — dat is de set aan sjablonen die WordPress gebruikt voor het uiterlijk van de website.
De functie die ik op boeklog gebruik, ziet er zo uit:
add_action( 'init', 'create_my_taxonomies', 0 );
function create_my_taxonomies() {
register_taxonomy( 'dossier', 'post', array( 'hierarchical' => false, 'label' => 'Dossier', 'query_var' => true, 'rewrite' => true ) );
}
Daarbij verdient de register_taxonomy regel misschien enige toelichting:
register_taxonomy( 'dossier', 'post', array( 'hierarchical' => false, 'label' => 'Dossier', 'query_var' => true, 'rewrite' => true ) );
Hierbij is in het eerste woord ‘dossier’ de naam vastgelegd die in de URL gebruikt gaat worden, omdat ‘rewrite’=> true. De aanduiding ‘label’ => ‘Dossier’ legt dan weer vast hoe het extra veld in de backoffice heet, en het scherm om deze nieuwe reeks aan trefwoorden te beheren.
Want, met dat ‘dossier’ heb ik een extra stel tags toegevoegd aan de website. Dat wordt vastgelegd door de parameter: array( ‘hierarchical’ => false
Was de parameter: array( ‘hierarchical’ => true, dan had ik een nieuwe serie categorieën aangemaakt, die onafhankelijk functioneren van de bestaande categorieën.
Het is met dezelfde techniek heel eenvoudig om nieuwe reeksen aan metadata te te voegen. Stel ik zou boeklog ook per recensie willen bijhouden wie een boek heeft uitgegeven, om later met die data te kunnen spelen, dan vraagt dat slechts een regel code extra, in de functions.php
add_action( 'init', 'create_my_taxonomies', 0 );
function create_my_taxonomies() {
register_taxonomy( 'dossier', 'post', array( 'hierarchical' => false, 'label' => 'Dossier', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'uitgever', 'post', array( 'hierarchical' => false, 'label' => 'Uitgever', 'query_var' => true, 'rewrite' => true ) );
}
Maar, hoe al die metadata dan weer uit de database gepeuterd kan worden, is ingewikkelder. Ook al vanwege het gebrek aan documentatie.
[wordt daarom vervolgd]