Nu je in de eerste post in deze serie hebt geleerd hoe je een custom post type kan aanmaken, is het tijd om een eigen custom taxonomy voor je custom post type aan te maken. Met een custom taxonomy kan je de posts van een custom post type categoriseren.

Wat is een taxonomy?

De term ‘taxonomy’ (of in het Nederlands taxonomie) vind zijn oorsprong in de biologie en is een classificatiesysteem dat wordt gebruikt voor het indelen van individuen of objecten in groepen. Met post types kan je met taxonomieën dus in feite hetzelfde doen; een taxonomy is een manier om je posts te verdelen in ‘groepen’.

Standaard heeft WordPress vier taxonomieën, namelijk categorieën, tags, link category en post formats, waarvan categorieën en tags de twee meest gebruikte taxonomieën zijn.

Met de taxonomy categorieën kan je (de naam zegt het al) je posts groeperen/organiseren in verschillende categorieën. Een groep posts binnen een taxonomy heet een term. Iedere taxonomy term heeft zijn eigen “index” pagina, waarop alle posts die dezelfde taxonomy term hebben worden getoond. De permalinkstructuur hiervan is doorgaans https://jewebsite.nl/[taxonomy-naam]/[term-naam].

Tags zijn een aanvulling op categorieën, en zijn een soort labels die je aan je posts kan hangen om de navigatie tussen posts makkelijker te maken. Afhankelijk van je thema worden de tabs meestal onder- of bovenaan een post getoond. Onderaan deze post heb ik ook een aantal tags toegevoegd. Als je tag aanklikt zal je zien dat je terecht komt op een archiefpagina met posts die dezelfde tag bevatten. Net als taxonomy terms hebben tags dus ook een eigen “index” pagina. De permalinkstructuur van tag index pagina’s is doorgaans https://jewebsite.nl/tag/[tag-naam].

Je eigen (custom) taxonomie maken

Wanneer categorieën en tags voor jouw eigen custom post types niet voldoen kan je er voor kiezen eigen taxonomieën aan te maken. Voor de custom post type Evenementen die we in de eerste post van deze serie hebben aangemaakt, kan het handig zijn om deze te organiseren in een custom taxonomy genaamd ‘Evenement typen’. Hier kan je dan weer termen aan toevoegen als ‘concerten’, ‘markten’, ‘feestdagen’, etc.

Taxonomieën kunnen ook hierarchisch zijn. Dat betekent dat je onder bijvoorbeeld de term ‘concerten’ sub-termen als ‘rock’, ‘pop’, ‘klassiek’ etc. kan hangen.

Met onderstaande functie voeg ik de custom taxonomy 'event_type' (‘Evenement type’) toe aan de custom post type ‘Evenementen’.

/**
 * Add taxonomy for event types
 */
add_action( 'init', 'wpsimpel_event_custom_taxonomy', 0 );

function wpsimpel_event_custom_taxonomy() {
	
	// Define the labels for your custom taxonomy
	$labels = array(
		'name'              => _x( 'Event Types', 'taxonomy general name', 'your-text-domain' ),
		'singular_name'     => _x( 'Event Type', 'taxonomy singular name', 'your-text-domain' ),
		'search_items'      => __( 'Search Event Types', 'your-text-domain' ),
		'all_items'         => __( 'All Event Types', 'your-text-domain' ),
		'parent_item'       => __( 'Parent Event Type', 'your-text-domain' ),
		'parent_item_colon' => __( 'Parent Event Type:', 'your-text-domain' ),
		'edit_item'         => __( 'Edit Event Type', 'your-text-domain' ),
		'update_item'       => __( 'Update Event Type', 'your-text-domain' ),
		'add_new_item'      => __( 'Add New Event Type', 'your-text-domain' ),
		'new_item_name'     => __( 'New Event Type', 'your-text-domain' ),
		'menu_name'         => __( 'Event Types', 'your-text-domain' ),
	);
	
	// Define the arguments for your custom taxonomy
	$args = array(
		'hierarchical'      => true,
		'labels'            => $labels,
		'show_ui'           => true,
		'show_in_rest'      => true,
		'show_admin_column' => true,
		'query_var'         => true,
		'rewrite'           => array( 'slug' => __( 'event-type', 'your-text-domain' ) ),
	);
	
	// Register your custom taxonomy
	register_taxonomy( 'event_type', array('event'), $args );
	
}

De custom taxonomy die net met bovenstaande code is aangemaakt is nu zichtbaar in het submenu van je custom post type in de WP Admin als Event types.

De custom taxonomy voor de custom post type in het WP Admin menu

Je kan nu terms aanmaken voor je taxonomie, net zoals je gewend bent bij post categorieën. In onderstaand voorbeeld heb ik 3 taxonomy terms (Feestdagen, Markten en Concerten) aangemaakt.

Terms toevoegen aan een custom taxonomy

Vervolgens kan je aan je custom post type post één of meerdere taxonomy terms toevoegen. Wanneer je naar het bewerkscherm van een custom post type post gaat zie je dat er aan de rechterkant een metabox bij is gekomen met je custom taxonomy terms.

Terms toevoegen aan een custom post type post

Zie je deze metabox niet? Klik dan rechtsboven op Schermopties en vink de optie Event Types aan.

De taxomomy terms metabox weergeven

Taxonomie pagina-templates

Wanneer je een custom taxonomy aanmaakt zoekt WordPress eerst in je thema naar de paginatemplate taxonomy-{taxonomy}-{term}.php. Is die template niet aanwezig, dan zoekt WordPress naar de volgende paginatemplate in de hiërarchische structuur taxonomy-{taxonomy}.php. Heeft je thema geen van deze paginatemplates, dan zal er worden gezocht naar de standaard archive.php en als die er niet is index.php.

  1. taxonomy-{taxonomy}-{term}.php: Bijvoorbeeld: wanneer je de taxonomy events hebt aangemaakt, met een taxonomy term concerten, dan zoekt WordPress eerst naar het templatebestand taxonomy-event-concerten.php.
  2. taxonomy-{taxonomy}.php: Bijvoorbeeld: wanneer je de taxonomy events hebt aangemaakt, dan zoekt WordPress naar het templatebestand taxonomy-event.php.
  3. taxonomy.php
  4. archive.php
  5. index.php

Taxonomie pagina-template bestanden aanmaken

Wil je je taxonomie pagina’s anders vormgeven dan andere archiefpagina’s, dan kan je hier voor dus zelf een pagina-template aanmaken. In plaats van te starten met een leeg template bestand kan je het beste beginnen met een kopie van de pagina-template archive.php (en als die er niet is index.php).

Maak een kopie van het archive.php bestand en hernoem deze naar taxonomy-{taxonomy}.php. In het geval van de custom taxonomy event_type heet je bestand dus taxonomy-event_type.php. Aan dit bestand kan je nu eigen code en/of opmaak toevoegen.

Wil je voor een specifieke taxonomy term een eigen pagina-template aanmaken, bijvoorbeeld voor de term ‘Concerten’, noem je bestand dan taxonomy-event_type-concerten.php.

Beoordeel deze post:

Gemiddeld: 0 / 5. Aantal beoordelingen: 0

Nog geen beoordelingen

Whoops! 😔

Zou je ons willen laten weten hoe we (deze post) kunnen verbeteren?