WordPress dispose de fonctions très pratiques pour afficher le contenu. Pour afficher la liste des pages disponibles de manière hiérarchique, il suffit d’utiliser la fonction wp_list_pages(), qui va générer toute seule le code HTML nécessaire, avec les listes imbriquées.

Seulement voilà, parfois, on a besoin de personnaliser un peu ce code HTML. Par exemple, moi, j’avais besoin d’ajouter une classe sur les liens, ce qui n’a pas été prévu par WordPress. Qu’à cela ne tienne, me direz-vous, il suffit de réécrire la fonction ! Pas si simple, car celle-ci utilise un système très efficace mais relativement compliqué appelé Walker (que vous trouverez dans le fichier wp-includes/classes.php). Et croyez-moi, vous n’avez pas envie de réécrire tout ça !

Le léger hack suivant va permettre de nous en sortir facilement.

Tout d’abord, il faut repérer la classe qui génère le contenu HTML. Dans le cas de la fonction wp_list_pages(), il s’agit de la classe Walker_Page (qui se trouve aussi dans le fichier précédemment cité). Copiez la dans votre plugin ou dans le fichier functions.php de votre thème, en prenant soin d’en modifier le nom. Par exemple :

[php]class Walker_Page_modified extends Walker { … }[/php]

Profitez en pour adapter le code HTML à vos besoins. Maintenant, voyons comment dire à WordPress d’utiliser votre classe personnalisée. Tout se passe dans les paramètres de la fonction wp_list_pages() :

[php]wp_list_pages(  array( ‘walker’ => new Walker_Page_modified() )  );[/php]

Et voilà, c’est aussi simple que ça ! Vous avez réussi à plier WordPress à vos besoins, et non le contraire.

2 thoughts on “Redéfinir les listes HTML générées par WordPress

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.