web-dev-qa-db-fra.com

Utilisation du filtre query_vars

J'essaie d'établir un lien avec l'administrateur WP pour afficher les messages d'une manière spécifique. La structure de cette URL est example.com/post123/?my-preview=456

/post123/ est le lien permanent pour un message. Le ?my-preview=456 permet à une section de ce message de récupérer des informations basées sur la valeur my-preview.

Je comprends que WP supprime les paramètres $_GET de l’url, j’ai donc essayé d’utiliser add_filter('query_vars','my_query_vars'); et

function my_query_vars($query_vars){
    $query_vars[] = 'my-preview';
    return $query_vars;
}

Sur la section où j'ai besoin d'obtenir cette valeur, j'ai essayé d'utiliser:

global $wp_query;
var_dump($wp_query->query_vars);

Même avec une URL comme dans l'exemple ci-dessus, la paire 'mon-aperçu' est introuvable dans le tableau $ wp_query-> query_vars.

Est-ce que je ne fais pas les bonnes démarches pour enregistrer une autre requête_var_var afin de l'utiliser ultérieurement? Si je le suis, pourquoi ne reste-t-il pas là?

EDIT: j'ai aussi essayé: add_action('init', 'add_query_vars');
avec

function add_query_vars() {
    global $wp;
    $wp->add_query_var('my-preview');
}

et wp_die(var_dump(get_query_var('my-preview'))); donne string(0) ""

3
Josh Levinson

Le filtre vars de requête est inutile pour ce que vous faites ici, car vous ne l'utilisez pas dans une requête. L'ajouter à l'URL en tant que paramètre GET ne le fera pas apparaître dans le tableau des vars de requête, car aucun mécanisme ne permet de convertir une variable GET en une requête, vous vous êtes assuré qu'il ne sera pas supprimé si c'est le cas ajouté à la requête .

Tant que la variable GET est unique et non réservée par WordPress, rien ne devrait empêcher la configuration puis l'accès à une variable GET par des moyens normaux: $_GET['my-preview'].

5
Milo