WordPress : associer les taxonomies catégories et étiquettes aux Pages

Astucedéveloppement

Publié par le (4572 lectures)

cms wordpress taxonomie

Le CMS WordPress propose nativement dans sa gestion de contenu des Articles (contenus classés temporellement par date de publication) et des Pages.

Wordpress Logo

Ces deux entités sont relativement semblables, mais par défaut les Pages manquent de fonctionnalités pourtant proposées avec les Articles :

  • les Catégories
  • les Étiquettes (ou tags)

Ces deux méthodes de classement sont des taxonomies : les catégories sont hiérarchiques tandis que les étiquettes sont facultatives et ne sont pas hiérarchiques.

Durant le développement de votre projet, vous souhaiterez peut être aussi associer ces catégories et étiquettes aux Pages pour profiter de leur classification et de toutes les fonctions natives bien pratiques en découlant, comme par exemple lister toutes les pages d'une catégorie, ou toutes les pages reliées à une étiquette.

La solution

L'extrait de code proposé peut être inséré dans le fichier functions.php du thème.

WordPress prévoit déjà une méthode register_taxonomy_for_object_type pour ajouter une taxonomie existante (cela tombe bien, c'est le cas ici, les catégories et étiquettes existent déjà) à un type d'objet (à savoir les Pages). Le premier paramètre sera la taxonomie, category pour les catégories natives et post_tag pour les étiquettes natives. Le deuxième paramètre l'objet concerné : page, on devine assez aisément pourquoi.

Nous lançons cette action dès l'initialisation init du CMS et ajoutons une action complémentaire sur l'événement pre_get_posts (sauf dans l'interface d'administration) qui se déclenche lorsqu'on prépare une requête mais avant de la lancer. Elle permettra de modifier le fonctionnement initial du CMS pour compléter les boucles et afficher des listes de Pages basées sur les catégories, afin de rendre ce comportement plus proche de celui que l'on a sur les Articles. Ce complément n'est apporté que sur les requêtes des templates d'archive et de tag d'où les tests de l'existence des paramètres get .

<?php

/**
 * Taxonomies (catégories et tags) également associées aux Pages
 */
function register_taxonomies_to_pages() {
    register_taxonomy_for_object_type('category', 'page');
    register_taxonomy_for_object_type('post_tag', 'page');
}
add_action('init', 'register_taxonomies_to_pages');

function category_and_tag_archives($wp_query) {
    if ($wp_query->get('category_name') || $wp_query->get('cat') || $wp_query->get('tag'))
        $wp_query->set('post_type', array('post','page'));
}
if (!is_admin()) {
    add_action('pre_get_posts', 'category_and_tag_archives');
}

Conséquence, nous pouvons désormais gérer ces taxonomies dans les Pages :

WordPress taxonomies étiquettes et catégories dans Pages

Bon développement !

Commenter

Vous devez être inscrit et identifié pour utiliser cette fonction.

Connectez-vous (déjà inscrit)

Oubli de mot de passe ? Pas de panique, on va le retrouver

Pas encore inscrit ? C'est très simple et gratuit.