pre_get_posts

WordPress 🟡 Mid

Definition

Hook filter qui permet de modifier la requete principale de WordPress AVANT son execution. Le moyen le plus performant de personnaliser les listings.

Analogie

Comme modifier la commande au restaurant avant qu'elle parte en cuisine, plutot que de renvoyer le plat.

Exemple de code

add_action('pre_get_posts', function(WP_Query $query) {
  if (!is_admin() && $query->is_main_query()) {
    if ($query->is_home()) {
      $query->set('posts_per_page', 6);
      $query->set('post_type', ['post', 'tutorial']);
    }
  }
});

Cas d'usage

Pour modifier le nombre de posts, le tri, les types affiches sur les pages d'archive et la home.

Anti-pattern

Utiliser query_posts() ou creer un nouveau WP_Query quand pre_get_posts suffit.
#core#interview#wordpress#performance