Affichage des types de publication personnalisés - Modèles et requêtes

Publié: 2016-09-26

Ceci est le 3ème et dernier article de notre série sur les Custom Post Types (CPT). Les sujets dont nous avons discuté dans les deux premiers étaient :

  • Types de publication personnalisés (comment les créer)
  • Taxonomies personnalisées

Dans les premier et deuxième articles, nous avons enregistré le type de publication personnalisé témoignages et la taxonomie personnalisée testimonial_service . Nous devons maintenant afficher les témoignages sur notre site. Nous allons donc voir comment créer un modèle pour nos témoignages, comment les interroger et comment les afficher n'importe où sur notre site.

Modèles de type de publication personnalisés par défaut

Nous avons créé notre CPT avec le paramètre has_archive défini sur true, qui affichera tous les témoignages dans une page d'archive .

WordPress utilise une hiérarchie de modèles pour afficher différents types de contenu. Pour le type de message personnalisé, il recherchera :

archive-{post_type}.php
single-{post_type}.php

Si ces templates ne sont pas définis dans le thème, alors il cherchera les templates généraux :

archive.php
single.php

Si même ces modèles ne sont pas définis, alors il sera par défaut le modèle index.php .

Dans notre cas, le thème Shaka a le single.php , mais n'a pas le modèle archive.php . Cela signifie qu'il utilisera par défaut le modèle single.php pour la page de témoignage unique. Il utilisera également le modèle index.php pour afficher tous les témoignages dans la page d'archive des témoignages.

Les témoignages seront affichés dans la page d'archives des témoignages , qui se trouvera sur cette page :

http://votre-domaine-va-ici.com/ ?post_type=testimonials

Si vous avez activé les jolis permaliens, vous pouvez également accéder à la page avec cette URL :

http://votre-domaine-va-ici.com/ témoignages

(Remarque : si les jolis permaliens ne fonctionnent pas pour vous, allez dans wp-admin -> Paramètres -> Permaliens et configurez-les comme vous le souhaitez et enregistrez les paramètres)

Tout d'abord, nous devrions écrire quelques témoignages dans les témoignages CPT nouvellement enregistrés , nous avons donc quelques données à afficher. J'ai ajouté 3 témoignages et voici à quoi ressemble la mise en page par défaut de la page d'archive des témoignages sur notre thème Shaka :

témoignages-default

Comme vous pouvez le voir, la mise en page est correcte, mais certaines des données affichées ne sont pas nécessaires, comme le "par auteur" et la date. De plus, la taxonomie personnalisée testimonial_service n'est pas affichée, nous allons donc l'ajouter dans nos modèles personnalisés.

Création de modèles personnalisés pour notre CPT

Comme mentionné dans la section précédente, nous devons créer deux modèles. L' archive-testimonials.php et le single-testimonials.php . Nous ne créerons que le modèle archive-testimonials.php pour cet exemple.

Nous devrions créer ces fichiers dans un thème enfant, mais par souci de simplicité, je vais ajouter le fichier archive-testimonials.php directement dans le thème Shaka. Je vais copier le fichier index.php, qui servira de point de départ, et le renommer en archive-testimonials.php .

J'ai supprimé le "par auteur", le code de date et la barre latérale. J'ai ajouté les images en vedette et la taxonomie personnalisée du service de témoignages . J'ai utilisé la fonction the_terms WP qui affiche une liste de termes WP spécifiques, dans notre cas la taxonomie personnalisée.

témoignages-terminé

Je sais qu'esthétiquement ça n'a pas l'air génial, mais ce n'est pas le sujet. Nous voulions créer une structure/mise en page différente de la page d'archives des témoignages avec des données différentes, et cela a été réalisé en quelques minutes.

Nous pourrions également faire de même pour la page des témoignages uniques. Nous copierions le fichier single.php et le renommerions en single-testimonials.php et changerions le code à partir de là.

Je n'ai montré aucun code ici car les exemples de code seraient différents pour chaque thème et des connaissances de base en HTML et PHP sont nécessaires pour coder les modèles. Mais il est toujours plus facile de modifier un modèle existant, c'est pourquoi nous avons utilisé le index.php comme point de départ.

Interroger les types de publication personnalisés

Une autre façon d'afficher les types de publication personnalisés sur votre site consiste à utiliser la classe WP_Query pour récupérer les types de publication personnalisés (parcourez-les et affichez-les).

Supposons que vous souhaitiez créer un widget qui affiche tous les témoignages dans un carrousel. Ou, que vous voudriez afficher des témoignages associés (même taxonomie de service de témoignage) sur la page de témoignage unique. Vous utiliseriez la classe WP_Query pour récupérer les témoignages pertinents.

Dans notre exemple, nous allons récupérer tous les témoignages qui se trouvent dans la taxonomie personnalisée du service de témoignage « plongée » et nous les afficherons dans une liste :

 <?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>

Comme vous pouvez le voir dans le code ci-dessus, nous préparons d'abord le tableau des paramètres d'arguments, qui est ensuite utilisé dans l'initialisation de WP_Query . Dans ce tableau, on définit pour récupérer :

  • `témoignages` CPT,
  • obtenir uniquement les témoignages qui sont publiés,
  • obtenir uniquement les témoignages qui se trouvent dans la taxonomie personnalisée de plongée `testimonial_service`.

Lorsque le new WP_Query est appelé, les témoignages pertinents sont récupérés et nous pouvons les parcourir en boucle. Dans la boucle, nous sortons simplement le titre (que j'ai utilisé pour le nom de l'auteur) et le contenu du témoignage dans une simple liste. De plus, nous devons toujours utiliser la fonction wp_reset_postdata , pour revenir à la boucle d'origine, lorsque nous utilisons une boucle WP_Query. Cela garantira que tout fonctionne une fois que nous aurons terminé avec notre requête personnalisée.

Ce sont les bases des types de publication personnalisés, et j'espère que vous comprenez maintenant comment ils fonctionnent. Comme pour tout sujet, il y a toujours plus de détails à approfondir. Je vous conseillerais de parcourir la documentation officielle de WP pour toutes les fonctions et classes que nous avons utilisées dans ces exemples. Faites-moi savoir dans la section des commentaires ci-dessous, si vous avez des questions.