pre_get_posts

Définition : pre_get_posts est une action WordPress permettant de modifier les paramètres d’un objet WP_Query avant l’exécution de sa requête. Elle sert notamment à ajuster une archive sans remplacer la requête principale.

Terminologie

Terme : pre_get_posts

Autres appellations : Préparation des requêtes, Pre Get Posts Hook

À quoi cela sert

Le hook reçoit un objet WP_Query modifiable. La méthode set() permet de changer des variables comme posts_per_page avant la recherche des publications. L’action concerne aussi des requêtes secondaires, ce qui impose de filtrer précisément celles que le projet souhaite modifier.

Dans quel contexte l’utiliser

L’utiliser pour changer la pagination d’une archive ou filtrer une requête principale dans des contextes documentés. Contrôler is_admin() et la méthode $query->is_main_query() avant d’agir sur le front public.

Exemple concret

Un site souhaite afficher six articles par page sur la page d’index des billets, sans modifier ses autres archives.

Exemple de code commenté

<?php
add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_home() ) {
        $query->set( 'posts_per_page', 6 );
    }
} );

Explication de l’exemple

Le callback écarte l’administration et les requêtes secondaires. Sur la requête principale correspondant à l’index du blog, il définit posts_per_page à 6 avant l’exécution SQL.

Précautions et limites

La méthode $query->is_main_query() appartient à l’objet reçu et est préférable à la fonction conditionnelle globale dans ce callback.

Termes associés

  • WP_Query
  • Main Query
  • Query Variables

Références officielles

Bouton retour en haut de la page