Pour faire l'aller-retour "à la manière de WordPress" sur le "front-end" (cela ne fonctionne pas dans le contexte de l'application wp-admin
), vous devez utiliser 3 fonctions de WordPress :
-
add_query_arg() - pour créer l'URL avec votre nouvelle variable de requête ('c' dans votre exemple)
- le site paramètres d'interrogation filtre - pour modifier la liste des variables de requête publiques que WordPress connaît (cela ne fonctionne que sur le front-end, car la WP Query n'est pas utilisée sur le back-end).
wp-admin
- Il ne sera donc pas non plus disponible en admin-ajax
)
-
get_query_var() - pour récupérer la valeur de votre variable de requête personnalisée passée dans votre URL.
Remarque : il n'est même pas nécessaire de toucher aux superglobales ( $_GET
) si vous procédez de cette manière.
Exemple
Sur la page où vous devez créer le lien / définir la variable de requête :
si c'est un lien de retour à cette page, il suffit d'ajouter la variable de requête
<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c ) )?>">
s'il s'agit d'un lien vers une autre page
<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c, site_url( '/some_other_page/' ) ) )?>">
Dans votre functions.php, ou dans un fichier de plugin ou une classe personnalisée (en frontal uniquement) :
function add_custom_query_var( $vars ){
$vars[] = "c";
return $vars;
}
add_filter( 'query_vars', 'add_custom_query_var' );
Sur la page / fonction où vous souhaitez récupérer et travailler avec la requête var définie dans votre URL :
$my_c = get_query_var( 'c' );
Sur la partie arrière ( wp-admin
)
A l'arrière, nous n'avons jamais exécuté wp()
Ainsi, la requête WP principale n'est pas exécutée. En conséquence, il n'y a pas de query vars
et le query_vars
Le crochet n'est pas exécuté.
Dans ce cas, vous devrez revenir à l'approche plus standard qui consiste à examiner votre carte de crédit. $_GET
superglobal. La meilleure façon de le faire est probablement :
$my_c = filter_input( INPUT_GET, "c", FILTER_SANITIZE_STRING );
mais en cas de besoin, vous pouvez utiliser la méthode éprouvée
$my_c = isset( $_GET['c'] ? $_GET['c'] : "";
ou une de ses variantes.
0 votes
Cette question sur wordpress.stackexchange explique le processus