WP_Query

Mise à jour le 12 décembre 2019

WP_Query est une classe PHP dans WordPress qui charge le contenu de la base de données. Les développeurs s’appuient sur WP_Query pour créer des listes de contenu personnalisées qui s’affichent sur le front-end du site.

Pour comprendre le fonctionnement de WP_Query, regardons un exemple. Voici une page qui affiche trois tours « promus »:

 Affichage des visites sur le frontend
Affichage des visites sur le frontend

Vous devez utiliser WP_Query pour charger ces publications de visites à partir de la base de données. Nous allons montrer comment créer cette liste de deux manières:

  1. Utilisation de WP_Query via le code PHP (nécessite une programmation)
  2. Utilisation de WP_Query à l’aide de l’interface graphique du jeu d’outils (aucune programmation nécessaire)

Utilisation de WP_Query avec le code PHP

Le code ci-dessous est la partie requête. Ici, WP_Query charge trois « tours » aléatoires de la base de données qui correspondent aux critères.

Tout d’abord, le code construit un tableau d’arguments (argargs), qui inclut tous les détails de la requête que nous devons exécuter. Ensuite, nous appelons la classe WP_Query et lui demandons de renvoyer les éléments (tours) qui correspondent aux arguments.

function display_promoted_tours(){ // Create an array of arguments, which will tell WP_Query what information to load from the database $args = array( 'post_type' => 'tours', 'post_status' => 'publish', 'limit' => 3, 'orderby' => 'rand', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'tour-status', 'field' => 'slug', 'terms' => array( 'promoted' ), 'operator' => 'IN' ) ), 'meta_query' = array( 'relation' => 'AND', array( 'key' => 'wpcf-valid-until', 'value' => strtotime( 'today 00:00' ), 'type' => 'NUMERIC', 'compare' = '>' ) ) ); // Call WP_Query and load the content from the database $my_query = new WP_Query( $args ); // Now display the "tours" if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); echo "<div class='card'>"; if ( has_post_thumbnail() ) : echo "<a href='" . get_the_permalink() . "' title='" . the_title(null,null,false) . "'>" . get_the_post_thumbnail() . "</a>"; endif; echo the_title( '<h3>', '</h3>', false); echo "<button class='button-style'><a href='" . get_the_permalink() . "'>Learn more</button>"; echo "</div>"; endwhile; wp_reset_postdata(); endif;}

Maintenant, vous avez le code qui charge le contenu de la base de données et l’affiche sur le front-end. La dernière étape consiste à ajouter ce code à l’un des modèles de votre thème, afin qu’il s’exécute sur la page où vous souhaitez qu’il apparaisse.

Pour ce faire, vous devrez suivre ces étapes supplémentaires:

  • Créez un thème enfant, afin de ne pas modifier directement les fichiers du thème (causant des problèmes de mise à jour futures)
  • Copiez la page du thème.modèle php et renommez-le
  • Modifiez le nouveau fichier de modèle et appelez display_promoted_tours à partir de celui-ci
  • Depuis l’administrateur WordPress, éditez la page qui devrait afficher cette liste de visites et configurez-la pour utiliser le nouveau modèle

Ce processus fonctionne bien, mais comme vous pouvez le voir, il nécessite une bonne quantité de codage et de débogage. Si vous êtes intéressé par la version sans PHP de ce processus, qui prend quelques minutes au lieu de quelques jours, continuez à lire.

Créer une requête avec l’interface graphique du jeu d’outils

Utilisons le même exemple de site Web de voyage que ci-dessus et créons une requête en utilisant le jeu d’outils au lieu du codage PHP.

Ci–dessous est le même exemple que ci-dessus mais cette fois sans utiliser de jeu d’outils de codage.

  1. Insérez le bloc Éditeur de vues où vous souhaitez que la liste apparaisse
  2. Choisissez le contenu que vous souhaitez charger
  3. Concevez l’apparence de la liste

Dans cet exemple, la vue affiche les résultats de la requête sous forme de grille. Vos Vues peuvent afficher les résultats de n’importe quelle manière, même sous forme de marqueurs sur les cartes.

Ajout d’une pagination aux requêtes

Lorsque vous souhaitez créer une longue liste de contenu, vous pouvez la décomposer en ajoutant une pagination.

 Vue avec une pagination
Vue avec une pagination

Pour afficher les résultats en pages, au lieu d’une longue liste, vous devrez ::

  1. Activer la pagination pour la vue
 Activation de la pagination dans le bloc de vues
Activation de la pagination dans le bloc de vues

  1. Concevoir les commandes de pagination
 Conception des contrôles de pagination
Conception des contrôles de pagination

Création de recherches personnalisées

En plus d’afficher les résultats sous forme de liste, vous pouvez également utiliser des requêtes pour créer des recherches personnalisées. La recherche personnalisée ajoute des contrôles frontaux qui permettent aux utilisateurs de filtrer les résultats et de trouver le contenu exact qu’ils recherchent.

 Création d'une recherche personnalisée
Création d’une recherche personnalisée à l’aide de l’éditeur de blocs WordPress
 Utilisation d'une recherche personnalisée sur le frontend
Utilisation d’une recherche personnalisée sur le frontend

Affichage des résultats de la requête sur une carte

Si vos messages ont un champ d’adresse personnalisé, vous pouvez les afficher sur une carte.

 Affichage des résultats de requête sur une carte
Affichage des résultats de requête sur une carte

Limitation et filtrage des requêtes

Les requêtes que vous créez n’ont pas à charger à partir de la base de données tous les éléments du type que vous avez sélectionné. Vous pouvez limiter et filtrer les requêtes pour renvoyer les résultats exacts que vous souhaitez obtenir.

Par exemple, vous pouvez créer des requêtes qui vont:

  • Retourne les premiers résultats
  • Filtre les résultats en fonction des valeurs des champs personnalisés et de la taxonomie
  • Filtre les résultats en fonction de la relation post
  • Filtre les résultats en fonction des entrées sur le front-end (créer une recherche personnalisée)
 Limiter et filtrer les requêtes
Limiter et filtrer les requêtes

Laisser un commentaire

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

Previous post Urétérorénoscopie de position de flanc: nouvelle approche positionnelle pour faciliter le traitement des pierres calicéales rétrogrades
Next post Terrain de vol RC