Le hook pre_get_posts
est utilisé pour modifier les paramètres de la boucle principale de WordPress avant que la requête ne soit exécutée.
Cela vous permet de personnaliser les requêtes de récupération des articles selon vos besoins sans avoir besoin de modifier directement la boucle principale.
Exemple d’usage : ajouter un filtre sur une page existante.
Voici comment utiliser le hook pre_get_posts
pour modifier les paramètres de la boucle principale :
- Créez une fonction personnalisée : tout d’abord, vous devez créer une fonction personnalisée qui contiendra vos modifications pour les paramètres de la boucle principale.
- Vérifiez le contexte : pour vous assurer que vous ne modifiez que la boucle principale et pas d’autres requêtes de récupération de contenu, vous pouvez vérifier certains critères, comme s’assurer que vous êtes sur la page d’accueil ou une page d’archive. Vous pouvez également exclure certaines pages en utilisant la fonction
is_admin()
pour s’assurer que les modifications ne s’appliquent qu’au front-end. - Modifiez les paramètres de la boucle principale : maintenant, à l’intérieur de cette fonction, vous pouvez modifier les paramètres de la boucle principale en utilisant les propriétés de l’objet
$query
. Par exemple, vous pouvez changer l’ordre de tri, exclure certaines catégories, modifier le nombre de publications à afficher, etc. - Ajoutez le hook
pre_get_posts
: enfin, ajoutez votre fonction au hookpre_get_posts
en utilisant la fonctionadd_action()
dans le fichierfunctions.php
de votre thème ou dans un plugin.
function mon_theme_modifier_boucle_principale( $query ) {
if ( ! is_admin() && $query->is_main_query() && ( $query->is_home() || $query->is_archive() ) ) {
// modifier l'ordre de tri
$query->set( 'orderby', 'date' );
// exclure certaines catégories
$query->set( 'category__not_in', array( 1, 2, 3 ) );
// modifier le nombre de publications à afficher
$query->set( 'posts_per_page', 10 );
}
}
add_action( 'pre_get_posts', 'mon_theme_modifier_boucle_principale' );
Avec ces étapes, votre fonction personnalisée sera appelée chaque fois que WordPress prépare la boucle principale pour une page d’accueil ou une page d’archive.
Remarque : pre_get_posts
est appelé pour toutes WP Query, la fonction is_main_query()
permet de vérifier qu’il s’agit bien de la requête principale (et non pas une requête personnalisée).
Vous pourrez ainsi apporter des modifications aux paramètres de la boucle avant que la requête ne soit exécutée, ce qui vous permet de personnaliser l’affichage des articles selon vos besoins.