web-dev-qa-db-fra.com

Comment passer un paramètre personnalisé à WP_Query pour le filtrage dans pre_get_posts

J'ai une requête ajax qui retourne le résultat d'une boucle WP_Query.

Je souhaite détecter dans le filtre pre_get_posts l'instance spécifique de wp_query utilisée dans le gestionnaire ajax.

J'ai pensé placer un paramètre personnalisé dans les $ args de WP_Query dans le gestionnaire ajax:

$args= array(...,
            'ajax' => 'AJAX',//custom param for detection of specific WP_Query instance
            ....);

et en détectant de cette manière l'instance spécifique dans pre_get_post:

 if(isset($query->query_vars['ajax']){
    Do stuff
 }

Je ne sais pas si cela a un sens pour vous ...

Merci

1
mcartur

Vous pouvez accéder aux variables de requête (y compris personnalisées) via la méthode WP_Query::get().

Par exemple:

$my_query = new WP_Query( array(
      ...
      'wpse105219_custom_var' => 'foobar',
      ...
) );

Pour 'attraper' ceci à pre_get_posts:

add_action( 'pre_get_posts', 'wpse105219_pre_get_posts', 10 );
function wpse105219_pre_get_posts( $query ){
      if( $query->get( 'wpse105219_custom_var' ) == 'foobar' ){
         //Alter $query
      }
}
4
Stephen Harris