Afficher des Templates Parts avec des Requêtes & Paramètres Intégrés
Lorsqu’il est nécessaire d’afficher plusieurs blocs de contenus sur une seule et même page WordPress, nous nous retrouvons vite à effectuer des tâches redondantes. Par exemple, dans le cadre du développement d’un thème de type Magazine, il n’est pas rare de devoir afficher: les articles à la une, vidéos, brèves ou encore un agenda.
Évidemment, chaque bloc nécessite d’exclure les résultats des requêtes antérieures, afin d’éviter les doublons. Dans cet atelier, nous allons créer une fonction dynamique afin de facilement intégrer n’importe quel type de blocs.
Les Objectifs
Notre fonction se nommera hwk_loop()
, elle devra appeler un Template spécifique, lui injecter une requête et passer des paramètres en cas de besoin, pour un traitement personnalisé. Voici la liste des fonctionnalités:
- Créer une
WP_Query
personnalisée - Utiliser la
WP_Query
globale en cours - Créer une
WP_Query
personnalisée, en utilisant les arguments de laWP_Query
globale en cours - Exclure ou inclure les résultats des blocs précédents
- Ajouter les résultats de notre
WP_Query
dans la liste des posts à exclure pour les prochains blocs - Gérer les résultats “introuvable” dans le Template Part
- Gérer les résultats “introuvable” dans un Template Part séparé
- Passer des paramètres arbitraire et les traiter dans le Template Part
- Choisir l’élément HTML de notre conteneur de Template: <section> / <div>
- Passer un
ID
,class
,style
ouattribut
au conteneur
Exemple d’Utilisation
Dans cet exemple de page, nous allons afficher le contenu de la boucle WP_Query
principale, un bloc d’articles relatifs et une sidebar à l’aide d’une seule et même fonction, seul les arguments vont diverger. Ici, pas besoin d’utiliser have_posts(): the_post()
. Cette méthode sera directement traité dans chaque Template Part.
Création de la fonction
Afin de pouvoir appeler hwk_loop()
sur n’importe quelle page, nous allons définir des arguments par défaut. Ceux-ci vont de garantir l’utilisation de la boucle WP_Query
principale en priorité.
Les fonctions d’aide
Nous allons créer une fonction personnalisée wp_parse_args_recursive()
qui permet de gérer les valeurs par défaut d’un tableau associatif, contrairement à son cousin wp_parse_args()
, natif à WordPress.
Exemple de Template Part
Voici un exemple de notre fichier loop.php, affiché par défaut par notre fonction hwk_loop()
.