Utilisation de WP_Query
La WP_Query est une classe utilisée par WordPress pour lancer des requêtes personnalisées sans faire appel à SQL. Elle permet de récupérer des informations spécifiques de la base de données en fonction de la page demandée.
Utilisation de la WP_Query Pour utiliser la WP_Query, il faut créer une instance de la classe et définir les paramètres de la requête. Les paramètres les plus courants sont :
post_type: le type de publication à récupérer (par exemple, des articles, des pages, etc.)posts_per_page: le nombre de publications à récupérer par pagepaged: la page actuelles: le mot-clé de recherche
Exemple concret Supposons que nous voulions afficher les 3 derniers articles en date sur une page. Nous pouvons utiliser la WP_Query de la manière suivante :
$args = array(
'post_type' => 'post',
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC'
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Afficher le titre et le contenu de l'article
the_title();
the_content();
}
} else {
// Aucun article trouvé
}
Dans cet exemple, nous créons une instance de la WP_Query avec les paramètres suivants :
post_type=postpour récupérer des articlesposts_per_page= 3 pour récupérer les 3 derniers articlesorderby=datepour trier les articles par dateorder=DESCpour trier les articles dans l’ordre descendant (les plus récents en premier)
Nous utilisons ensuite la méthode have_posts() pour vérifier si des articles ont été trouvés, et la méthode the_post() pour afficher le titre et le contenu de chaque article.
Modification de la WP_Query Il est également possible de modifier la WP_Query utilisée par WordPress pour générer une page. Cela peut être utile pour ajouter des filtres ou des paramètres personnalisés à la requête. Pour ce faire, il faut utiliser les hooks et les filtres fournis par WordPress.
Par exemple, pour ajouter un filtre à la WP_Query utilisée pour générer la page d’accueil, nous pouvons utiliser le hook pre_get_posts :
function mon_filtre($query) {
if ($query->is_home()) {
$query->set('posts_per_page', 5);
}
}
add_action('pre_get_posts', 'mon_filtre');
Dans cet exemple, nous définissons une fonction mon_filtre qui vérifie si la requête est pour la page d’accueil, et si c’est le cas, nous définissons le nombre de publications par page à 5. Nous utilisons ensuite le hook pre_get_posts pour ajouter ce filtre à la WP_Query.