Intégrer des pages dans des catégories

Type de snippet : Configurations

Selon la façon dont on souhaite structurer le contenu de son site, on peut avoir besoin de faire en sorte que les pages sous WP puissent être classées dans des catégories.

Ce n’est pas natif, seuls les articles ou custom post types peuvent être catégorisés normalement.

Dans functions.php de son thème (thème enfant si on en a un), on fait un hook d’action sur admin_init pour pouvoir ajouter les catégories aux pages au niveau du Back Office.

<?php
function pixiscreen_add_category_to_pages() {
	register_taxonomy_for_object_type('category', 'page');
}
add_action('admin_init', 'pixiscreen_add_category_to_pages');

Ensuite dans le BO c’est bon : quand on crée une nouvelle page, on a alors, comme pour les articles, une metabox permettant d’attribuer une catégorie, si on le souhaite, à la page que l’on crée.

Le codex y fait référence sur ces liens : https://codex.wordpress.org/Function_Reference/register_taxonomy_for_object_type et https://developer.wordpress.org/reference/functions/register_taxonomy_for_object_type/

Attention

Cette manière de procéder ne fonctionne pas encore correctement avec le nouvel éditeur. En tout cas je n’ai pas trouvé comment. Même si cette possibilité est consignée dans le Codex, si je passe dans le nouvel éditeur, je perd la métabox permettant d’indiquer la catégorie de la page … Dès que je trouve comment y remédier, je reviens par ici mettre à jour ce snippet. En attendant, je suis obligée de faire en sorte que ces pages catégorisées ne soient éditées que via l’éditeur classique.

UPDATE ! Bon en fait c’était tout simple, mon hook était un peu trop tardif si fait sur admin_init, il faut le faire sur init et on a bien la métabox de catégorie qui s’ajoute pour les pages.

<?php
function pixiscreen_add_category_to_pages() {
	register_taxonomy_for_object_type('category', 'page');
}
add_action('init', 'pixiscreen_add_category_to_pages');

Pour consulter les hooks d’action c’est par là : Codex Action_Reference