Comment créer des pages d’archives customisées pour vos custom post type ?
Dans cet article, nous allons voir comment outrepasser le fonctionnement par défaut de wordpress concernant les custom post type. Normalement, à la création de votre custom post type, si l’on donne comme argument « has_archive » =>’true‘ à notre CPT, wordpress va automatiquement créer une page d’archive qui affichera tous nos custom post type.
Le problème
Le problème c’est que cette page n’est pas générée dans le dossier wordpress, on ne peut donc pas la modifier par le code. Dans le cas de l’utilisation d’un page builder, Elementor ou autre, vous ne pourrez pas éditer la page.
La solution
Si vous utilisez un page builder et que vous avez besoin de modifier la page ou la rendre administrable pour l’utilisateur final, il faut donc impérativement trouver une solution. Celle-ci consiste en fait à créer un modèle de page d’archive pour notre custom post type.
La création du custom post type
Voici le code de création d’un custom post type. Ici, notre custom post type s’appelle « formation »
Si on laisse ici « has_archive » = »true » , on peut retrouver un onglet qui s’appelerait « toutes les formations » dans l’onglet Apparence / Menu du backoffice. On aurait donc automatiquement une page avec tous les articles lis à ce custom post type.
Nous on passe ce paramètre « has_archive » à false, et on crée par la même occasion une réécriture d’url :
Cela garantit que WP ne crée pas d’archive réelle et accepte notre modèle de page à la place. La réécriture garantit notamment que les CPT individuels seront publiés de manière à ressembler à des « enfants » de cette page, même s’ils ne le sont pas en réalité !
La création du modèle de page
Tout en haut de notre nouveau fichier php, on signifie à worpdress qu’on est là sur un nouveau modèle de page « Toutes nos formations ». Le nom doit être le même que celui indiqué dans la réécriture d’url. Dans le backoffice de wordpress, on crée ensuite notre nouvelle page « Toutes nos formations » et on lui attribue comme modèle de page « Toutes nos formations ».
Une page administrable
Dans cette page, on va donc pouvoir coder en dur tout ce qu’on veut, cela occupera un espace dans la page en front. On va notamment créer la boucle qui va ramener tous nos custom post type. Il s’agit ici de simuler le comportement d’une page d’archive classique .
Pour le reste, on peut appeler le template_tag the_content() normalement, afin que l’utilisateur puisse administrer le reste de la page via l’éditeur de wordpress, Elementor, ou tout autre page builder
Le breadcrumb
Sans modification supplémentaire, le fil d’Ariane va continuer à afficher le nom de la page d’archive générée automatiquement par wordpress. Il va donc falloir le modifier. Si on utilise Yoast SEO, voici un bout de code qui permet de modifier ce fil d’Ariane.
Adapté à notre exemple, voici ce que cela donne:
Maintenant, lorsque vous serez dans votre article du custom post type, le fil d’Ariane affichera le nom de votre modèle de page crée précédemment. L’utilisateur ne pourra donc plus tomber sur la page d’archive générée par wordpress.
Sources :
Cette astuce m’a été donnée par WebElaine sur stackoveflow.