L'action pre_get_posts

Résumé Support

Dans ce chapitre nous allons parler du hook pre_get_posts. Ce hook permet d'altérer une requête avant son éxécution et va notamment permettre d'altérer la requête principale de WordPress pour y ajouter des filtres spécifiques.

/** * @param WP_Query $query */ function montheme_pre_get_posts ($query) { if (is_admin() || !is_search() || !$query->is_main_query()) { return; } if (get_query_var('sponso') === '1') { $meta_query = $query->get('meta_query', []); $meta_query[] = [ 'key' => SponsoMetaBox::META_KEY, 'compare' => 'EXISTS', ]; $query->set('meta_query', $meta_query); } } add_action('pre_get_posts', 'montheme_pre_get_posts');

Vous pouvez aussi utiliser le filtre query_vars pour permettre à WordPress de gérer de nouveau mots clef au niveau de l'URL.

function montheme_query_vars ($params) { $params[] = 'sponso'; return $params; } add_filter('query_vars', 'montheme_query_vars');