Afficher des Templates Parts avec des Requêtes & Paramètres Intégrés

Publié le 05 avril 2018 par Missfx

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 la WP_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 ou attribut 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.

View the code on Gist.

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é.

View the code on Gist.

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.

View the code on Gist.

Exemple de Template Part

Voici un exemple de notre fichier loop.php, affiché par défaut par notre fonction hwk_loop().

View the code on Gist.