Comment utiliser la classe WP_Query dans WordPress ?

Publié: 2024-08-09

Table des matières
Qu'est-ce que WP_Query ?
Une courte note sur WP_Query
Comment pouvez-vous utiliser WP_Query ?
WP_Query Vs query_posts() : Lequel est préférable ?
Quelques exemples d'utilisation de WP_Query
Conclusion

Qu'est-ce que WP_Query ?

WP_Query est une classe PHP puissante dans WordPress qui vous permet de créer des requêtes personnalisées sur l'ensemble de données pour récupérer des publications et d'autres contenus et les afficher sur la page. Il fournit un moyen flexible et efficace d'interagir avec la base de données et de récupérer du contenu en fonction de divers critères.


Une courte note sur WP_Query

Vous savez peut-être que WordPress stocke toutes les données de votre site Web, telles que les publications, les pages, les commentaires ou les paramètres, dans la base de données MySQL.

Ainsi, pour toute personne visitant votre site Web, une requête est immédiatement envoyée à cette base de données, récupérant les données demandées qu'il s'agisse de publications ou de pages à afficher sur votre écran.

Mais vous devez être surpris de savoir qu'avec l'aide de WP_Query, vous pouvez créer des requêtes qui peuvent vous aider à récupérer des informations spécifiques de votre base de données. Ainsi, chaque fois que quelqu’un recherche votre contenu, WordPress utilise cette classe intégrée.

Il ne fait aucun doute que vous pouvez toujours utiliser SQL pour écrire toutes ces requêtes, mais c’est assez difficile et ce n’est pas la manière la plus simple de le faire. En revanche, WP_Query est beaucoup plus simple.

WP_Query est si utile que vous pouvez créer des requêtes personnalisées pour afficher du contenu spécifique sur votre site Web sans que le visiteur n'ait à le rechercher.

En bref, WP_Query est un outil qui permet aux développeurs de contrôler plus facilement le contenu affiché sur les sites WordPress et son apparence, sans avoir besoin d'écrire du code compliqué.

Supposons que vous créiez un type spécial de contenu dans WordPress appelé « blog ». Pour afficher ces articles « blog » sur votre site, vous pouvez écrire une requête spéciale en utilisant WP_Query.

// WP QUERY
$query = new WP_Query([
'post_type' => 'blog', // Type of content
'posts_per_page' => 6, // Number of posts to show
'category_name' => 'Entertainment' // Category filter
]);

Désormais, pour afficher la requête demandée, WP_Query fournit des raccourcis et des fonctions intégrées qui vous aident à personnaliser la boucle. The Loop est un peu de code PHP que WordPress utilise pour afficher les publications sur une page.

WordPress traite et formate chaque publication selon les critères que vous avez définis dans WP_Query (comme le type de publication, le nombre de publications et la catégorie).

Cet outil puissant aide les développeurs à personnaliser facilement la façon dont les thèmes WordPress affichent le contenu sans avoir à écrire des requêtes de base de données complexes.


WPOven Dedicated Hosting

Comment pouvez-vous utiliser WP_Query ?

Vous savez maintenant ce qu'est WP_Query et ce qu'il fait exactement. Voyons différents scénarios de cas dans lesquels vous pouvez utiliser cet outil puissant.

1. Créer une boucle dans WP_Query

Tout d’abord, vous devez comprendre ce qu’est Loop. C'est une partie de WordPress qui est très réactive pour récupérer les données de publication à partir des données et les afficher sur votre site Web. Il se concentre principalement sur le choix de l'apparence de votre contenu en fonction des modèles de votre thème.

Que peut montrer la boucle sur le site ?

Selon les paramètres que vous choisissez, la Boucle peut afficher :

  • Types de publication personnalisés et champs personnalisés
  • Publiez des titres et de courtes descriptions sur votre page d'accueil
  • Le contenu et les commentaires d'un seul article
  • Contenu de pages individuelles à l'aide de balises de modèle

Pour votre meilleure compréhension, vous trouverez ci-dessous une structure simple de Loop.

Exemple de boucle de base

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

  • Ici, la fonction have_posts() vérifie si des publications sont disponibles.
  • while ( have_posts() ) : the_post(); : S'il y a des publications, cette boucle s'exécutera pour chaque publication et affichera son contenu.

Personnaliser la boucle avec WP_Query

Parfois, vous ne souhaitez pas afficher tous vos messages. Vous pouvez utiliser WP_Query pour personnaliser ce qui est affiché :

<?php
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Comment fonctionne cette boucle personnalisée

  • Configuration de la requête : $the_query = new WP_Query( $args ); crée une requête personnalisée basée sur les paramètres que vous définissez (comme le type de publication, la catégorie, etc.).
  • Exécution de la boucle : if ( $the_query->have_posts() ) { ... } vérifie s'il existe des publications qui correspondent à votre requête. S'il y en a, il affiche le titre de chaque article dans une liste.
  • Réinitialisation des données de publication : wp_reset_postdata(); garantit que les données de publication d'origine sont restaurées après l'exécution de la boucle personnalisée.

Options de personnalisation

Avec WP_Query, vous pouvez :

  • Afficher les publications d'une catégorie, d'un auteur ou d'une plage de dates spécifique
  • Afficher les publications avec certaines balises ou champs personnalisés

2. Arguments WP_Query

Lorsque vous souhaitez obtenir des publications spécifiques de votre site WordPress, vous devez créer WP_Query et pour cela, vous devez inclure quatre parties de base :

  • Argument de requête : indique à WordPress quelles données récupérer.
  • La requête : utilise l'argument pour récupérer les données.
  • The Loop : Traite et affiche chaque publication.
  • Post Data Reset : Réinitialise les données après l’exécution de la boucle.

Mais l'un des composants les plus essentiels de WP_Query est l'argument (souvent appelé arguments WP_Query) qui est chargé d'extraire la publication spécifique que vous souhaitez obtenir de la base de données.

C'est tellement important qu'au lieu d'afficher tous les messages, l'argument définit des conditions pour afficher uniquement certains messages.

Exemple d'argument

  • La ligne $args : c'est ici que vous incluez votre argument de requête.
  • Structure : Vous mettez certains paramètres dans un tableau. Voici un exemple de base,

$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);

Exemple spécifique

Si vous souhaitez afficher les publications avec la balise « Erreurs WordPress », vous devez configurer votre argument de requête comme ceci :

$query = new WP_Query( array( 'tag' => 'WordPress Errors' ) );

Pourquoi l'argument est essentiel

  • Pas d'argument, pas de contenu : Si vous n'incluez pas d'argument WP_Query, WordPress ne saura pas quelles publications afficher. Votre requête ne récupérera aucun contenu de la base de données.

3. Définissez les paramètres WP_query

Les paramètres sont quelque chose qui rend WP_Query utile et puissant. Avec la variété d’entre eux disponibles, il est devenu facile pour quiconque de filtrer les recherches dans les bases de données.

Par exemple, lorsque vous souhaitez afficher des publications spécifiques sur votre site WordPress, vous utilisez WP_Query et pour vous assurer d'obtenir la bonne publication, vous pouvez définir des paramètres. Vous avez peut-être une autre question en tête. Quels sont les paramètres ?

Eh bien, les paramètres sont comme des instructions qui indiquent à WordPress quel type de publications extraire de la base de données.

Exemples de paramètres communs

Voici quelques paramètres courants que vous pouvez utiliser :

  • cat : affiche les publications de catégories spécifiques.
  • author : affiche les articles d'un ou plusieurs auteurs spécifiques.
  • post_status : affiche les publications en cours, planifiées, publiées ou supprimées.
  • orderby : Trie les articles par auteur, type d'article, date, etc.
  • posts_per_page : Définit le nombre de publications à afficher.
  • tag : affiche les publications avec des balises spécifiques.
  • ordre : trie les messages par ordre croissant ou décroissant.
  • post_type : Définit s'il faut afficher les publications, les pages ou les types de publication personnalisés.

Comment utiliser les paramètres

Si vous souhaitez afficher les publications d'une certaine catégorie, vous pouvez utiliser le category_name . Voici un exemple :

$query = new WP_Query( array( 'category_name' => 'WordPress' ) );

Cela affichera tous les messages de la catégorie « personnel » et toutes les sous-catégories.

Exemple plus complexe

Dans cet exemple, nous montrons comment vous pouvez utiliser plusieurs valeurs dans différents arguments pour créer une requête complexe et personnalisée afin de récupérer les publications exactes souhaitées.

Nous récupérerons les articles appartenant à des catégories spécifiques, comportant certaines balises, rédigés par des auteurs spécifiques et triés par date par ordre décroissant.

$args = array(
'category__in' => array(5, 10), // Categories with IDs 5 and 10
'tag__in' => array('featured', 'popular'), // Posts tagged with 'featured' or 'popular'
'author__in' => array(1, 2), // Authors with IDs 1 and 2
'orderby' => 'date', // Order by date
'order' => 'DESC', // In descending order
'posts_per_page' => 10 // Limit to 10 posts
);

$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display post content
the_title('<h2>', '</h2>');
the_excerpt();
}
} else {
// No posts found
echo 'No posts found';
}

// Restore original Post Data
wp_reset_postdata();

  • category__in : Aide à spécifier que nous voulons des publications de catégories avec les ID 5 et 10.
  • tag__in : Spécifie que nous voulons que les publications soient étiquetées avec « en vedette » ou « populaire ».
  • author__in : Spécifie que nous voulons des publications d'auteurs avec les ID 1 et 2.
  • orderby : Spécifie que nous souhaitons classer les articles par date de publication.
  • order : Spécifie que nous voulons les publications par ordre décroissant (les plus récentes en premier).
  • posts_per_page : Limite le nombre de messages récupérés à 10.

4. Modifier des objets avec des méthodes et des propriétés de classe

Dans WordPress, WP_Query est une classe PHP spéciale utilisée pour récupérer les publications de la base de données. Considérez-le comme un outil qui vous aide à obtenir les publications exactes que vous souhaitez afficher sur votre site Web.

Que sont les propriétés et méthodes de classe ?

En PHP, une classe peut avoir des propriétés (comme des variables) et des méthodes (comme des fonctions). Voici un moyen simple de les comprendre :

  • Propriétés : Ce sont comme des conteneurs qui contiennent des informations. Dans le contexte de WP_Query , les propriétés peuvent inclure des éléments tels que la liste des publications ou le nombre de publications trouvées.
  • Méthodes : Ce sont comme des outils ou des actions que vous pouvez effectuer. Dans WP_Query , les méthodes peuvent vous aider à vérifier s'il y a des publications, à obtenir le titre d'une publication ou à réinitialiser la requête.

Pouvez-vous modifier les propriétés directement ?

Non, vous ne pouvez pas modifier les propriétés directement, même les développeurs le déconseillent fortement, mais vous pouvez également utiliser des méthodes.

Les méthodes sont comme des outils ou des commandes officiels qui vous aident à suivre le bon chemin. C'est exactement ce qui fonctionne comme les fonctions, lorsque vous apportez certaines modifications aux méthodes de WP_Query, vous pouvez également personnaliser les données récupérées.

Exemple d'utilisation de méthodes dans WP_Query

Dans cet exemple, une fonction reset_postdata() peut être une étape critique dans l'écriture de votre WP_Query. Cette méthode réinitialisera les propriétés de $current_post et $post.

<?php
// Create a new query with specific arguments
$the_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
));
?>

<?php if ($the_query->have_posts()) : ?>
<!-- Display the posts -->
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?>
<!-- Reset the post data to avoid conflicts -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Panne:
  • Création d'une requête :
    • $the_query = new WP_Query($args); : Il crée un nouvel objet WP_Query avec les arguments que vous avez fournis.
  • Vérification des messages :
    • if ($the_query->have_posts()) : Il vérifie s'il y a des publications à afficher en fonction de votre requête.
  • Parcourir les messages :
    • while ($the_query->have_posts()) : $the_query->the_post(); : Il configure les données de publication afin que vous puissiez les afficher.
  • Affichage des messages :
    • the_title(); et the_excerpt(); : Il affiche le titre et l'extrait du message en cours.
  • Réinitialisation des données de publication :
    • wp_reset_postdata(); : Il réinitialise les données de publication globales sur la publication de la requête principale. Ceci est important pour éviter de gâcher d’autres parties de votre page.

Méthodes courantes que vous pouvez utiliser

Voici quelques méthodes courantes dans WP_Query que vous pouvez utiliser pour travailler avec votre requête :

  • get_posts :
    • Ce qu'il fait : Récupère une liste de publications.
    • Exemple :phpCopier le code $posts = get_posts(array('category' => 'news'));
  • have_posts :
    • Ce qu'il fait : Vérifie s'il y a des messages à afficher.
    • Exemple :phpCopier le code if ($the_query->have_posts()) { // There are posts to show }
  • the_post :
    • Ce qu'il fait : configure les données de publication actuelles.
    • Exemple :phpCopier le code $the_query->the_post();
  • fill_query_vars :
    • Ce qu'il fait : Complète les détails de requête manquants.
    • Exemple :phpCopier le code $the_query->fill_query_vars($args);

En fournissant à WP_Query les bonnes informations, vous pouvez le personnaliser pour effectuer différentes tâches. Cette méthode constitue un moyen flexible et sûr d’ajuster les propriétés de la classe.


WP_Query Vs query_posts() : Lequel est préférable ?

Vous trouverez ci-dessous un tableau de comparaison détaillé de WP_Query par rapport à query_posts() dans WordPress, incluant certains des principaux points qui peuvent vous aider à comprendre pourquoi WP_Query est généralement préféré à query_posts() :

Fonctionnalité WP_Query requête_posts()
But Créez des requêtes personnalisées pour récupérer les publications de la base de données. Modifiez la requête principale sur la page (non recommandé pour un usage général).
Utilisation principale Idéal pour créer de nouvelles requêtes et afficher les publications de manière personnalisée. Généralement utilisé pour modifier la requête principale mais n'est pas recommandé.
Utilisation recommandée Oui, c'est la méthode recommandée pour récupérer et afficher les publications. Non, il est préférable d'éviter d'utiliser cette fonction dans la boucle principale, les plugins et les thèmes.
Effet sur la requête principale N'affecte pas la requête principale. Vous pouvez exécuter des requêtes personnalisées sans modifier la boucle principale. Remplace complètement la requête principale, ce qui peut provoquer des conflits ou des résultats inattendus.
Réinitialisation des données de publication Utilisez wp_reset_postdata() pour restaurer la requête d'origine après avoir exécuté une requête personnalisée. Pas de fonction équivalente, ce qui signifie que vous devrez peut-être restaurer manuellement les données de publication de la requête principale.
Gestion de plusieurs requêtes Peut gérer plusieurs requêtes et est conçu pour des scénarios complexes. Gère une seule requête et modifie la requête principale, ce qui peut poser problème pour plusieurs requêtes.
Impact sur les performances Généralement meilleur pour les performances car cela ne modifie pas la requête principale. Peut être moins efficace et causer des problèmes en raison de son impact sur la requête principale.
Exemples de requêtes personnalisées $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); query_posts(array('post_type' => 'post', 'posts_per_page' => 5));
Exemple de réinitialisation des données <?php wp_reset_postdata(); ?> Pas de fonction de réinitialisation, une réinitialisation manuelle est nécessaire si des modifications sont apportées à la requête principale.
Facilité d'utilisation Facile à utiliser avec des méthodes et des fonctions intégrées pour interroger les publications et les pages. Moins simple et peut entraîner des problèmes s’il n’est pas utilisé avec précaution.
WP_Query contre query_posts()

WPOven Dedicated Hosting

Quelques exemples d'utilisation de WP_Query

Pour mieux comprendre WP_Query et son utilisation pratique, consultez quelques-uns des exemples ci-dessous :

1. Afficher les derniers articles publiés cette semaine

Si vous disposez d’une bonne base d’utilisateurs ou d’un trafic Web décent, cela signifie que vos visiteurs aiment votre contenu et souhaiteraient lire les derniers articles publiés sur votre site.

Lors de la conception de votre site Web, vous pouvez présenter les publications récentes dans une section dédiée de la page Web. Heureusement, avec WP_Query, vous pouvez facilement trouver des publications en fonction de paramètres de date. Voyons comment.

<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>

Dans cet exemple, nous créons un WP_Query pour rechercher les articles publiés dans la semaine en cours. Nous utilisons une partie spéciale de WP_Query appelée date_query pour spécifier nos critères de recherche.

L'objectif principal de la requête était de trouver les articles publiés au cours de la semaine en cours. Et pour cela, nous avons utilisé le paramètre date_query pour rechercher des publications en fonction des dates. Il faut un ensemble d'arguments liés à la date.

Ainsi, lorsque vous personnalisez le paramètre date_query , vous pouvez récupérer et afficher les publications récemment publiées. Cependant, vous êtes également libre de spécifier des valeurs personnalisées pour rendre la requête plus efficace et mettre en évidence les derniers articles écrits au cours de la semaine dernière.


2. Afficher le dernier message dans une catégorie spécifique

Les visiteurs de votre site Web peuvent souvent rechercher les informations les plus récentes et pour augmenter l'engagement et les pages vues, c'est une bonne pratique de suggérer d'autres articles connexes qui pourraient leur plaire.

Bien qu’il existe de nombreuses façons de lier des publications connexes dans WordPress, WP_Query est l’un des moyens efficaces d’y parvenir. C’est particulièrement un excellent moyen pour le site Web qui publie toujours du contenu à jour.

Par exemple, si quelqu'un lit un article sur les erreurs WordPress, WP_Query peut aider à afficher d'autres articles similaires et récents.

Donc, si vous souhaitez récupérer les derniers articles d'une catégorie spécifique, utilisez cette WP_query et apportez de petites modifications qui incluent les informations de votre site :

<?php

// Get the current post id.
$current_post_id = get_the_ID();

// Get the current post's category (first one if there's more than one).
$current_post_cats = get_the_category();
$current_post_first_cat_id = $current_post_cats[ 0 ]->term_id;

// Setup arguments.
$args = array(
// Get category's posts.
'cat' => $current_post_first_cat_id,
// Exclude current post.
'post__not_in' => array( $current_post_id )
);

// Instantiate new query instance.
$my_query = new WP_Query( $args );

?>


3. Afficher les articles du même auteur et dans la même catégorie

Il est fort possible que si le visiteur apprécie votre contenu, il apprécie les opinions, le style d'écriture et la perception de l'auteur.

Pour cela, vous pouvez utiliser WP_Query pour suggérer à vos lecteurs des articles similaires écrits par le même auteur. La requête recherchera les articles écrits par le même auteur pour la même catégorie que l'article actuel.

Pour cela, nous devons créer une chaîne WP_Query spécifique, qui recherchera les publications avec des auteurs similaires et la même catégorie.

Voici le code :

<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>

Dans le code ci-dessus, vous devez remplacer « Rahul » par le nom de l'auteur et « WordPress » par le nom de la catégorie.


4. Affichez vos publications les plus populaires

Tout comme les publications les plus récentes ou les plus récentes que vous avez affichées pour vos lecteurs. vous aimerez peut-être également afficher des articles sur des sujets que vos lecteurs aiment et engagent beaucoup. Pour y parvenir, vous pouvez utiliser le paramètre orderby et le transmettre à l'argument comment_count .

<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>

Le WP_Query ci-dessus recherchera les publications dans la catégorie « Erreurs WordPress » et filtrera les résultats en fonction du nombre de commentaires de chaque publication.

Le résultat affichera cinq publications avec le plus de commentaires, par ordre décroissant de gauche à droite, en commençant par la publication avec le plus d'engagement et en terminant par la plus faible.


Conclusion

Vous avez maintenant constaté à quel point WP_Query est puissant et comment il vous permet d'effectuer facilement des requêtes de base de données dans WordPress. Vous offrez également la flexibilité de personnaliser votre site et d’offrir une expérience unique aux visiteurs.

Pour utiliser WP_Query, vous pouvez :

  • Créez une boucle : affichez vos publications.
  • Utiliser les arguments de requête : personnalisez vos recherches.
  • Définir des paramètres spécifiques : filtrez vos résultats.
  • Modifier les propriétés de la classe : ajustez les résultats de la requête avec des méthodes.

Si vous maîtrisez toutes ces techniques, vous pourrez facilement recommander des publications spécifiques en fonction de divers facteurs tels que la popularité et la date.

Cette technique permet d'augmenter l'engagement de l'utilisateur, d'améliorer l'expérience utilisateur et d'aider également vos visiteurs fidèles à trouver un contenu plus pertinent.

Si vous avez encore des doutes concernant WP_Query ou si vous souhaitez ajouter d'autres éléments de contenu que nous aurions peut-être manqués. Veuillez nous le faire savoir dans la section commentaires ci-dessous.