Je voudrais $ _GET un paramètre dans l'URL, pour ce que j'ai lu, je dois utiliser query_vars. J'ai d'abord ajouté les lignes suivantes à functions.php:
function add_query_vars_filter( $vars ){
$vars[] = "getvar";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
après ça:
if(get_query_var('getvar')) {
die('DIE');
}
Si je tape domain.com/?getvar=1, rien ne se passe. Où est le problème?
Votre filtre:
function add_query_vars_filter( $vars ){
$vars[] = "getvar";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
Est correct. Lorsque WordPress commence à assembler la liste des variables de requête, cette fonction ajoute "getvar" à la liste.
Mais ensuite, vous vérifiez immédiatement si la variable est définie avant d’atteindre ce point. Le filtre query_vars
n'a pas encore eu lieu. Cela suggère que votre compréhension des événements/filtres est incomplète. Lorsque vous ajoutez le filtre, il n'exécute pas ce qu'il contient, de la même manière que si je vous dis de manger de la nourriture une fois que vous avez payé, vous attendez d'avoir payé pour le manger, vous ne le mangez pas immédiatement. .
Alors:
Donc, vous devez vérifier la requête var après la fonction est exécutée, le fait d’être plus loin dans le fichier ne le fait pas. vous devez vous accrocher à une action telle que init
et y effectuer votre vérification.