web-dev-qa-db-fra.com

Wp Login redirige les paramètres de l'url

Si j'écrishttp://domain.com/wp-login.php?redirect_to=http://domain.com/specificpage/?parameter1=dog&parameter2=dog&parameter3=cat dans la barre d'adresse de l'URL (pour que la page de connexion soit redirigée vers une page spécifique avec des paramètres) et connecte-toi.

Je reçois redirigé vers la bonne page mais uniquement avec le premier paramètre (http://domain.com/specificpage/?parameter1=dog). les deux autres paramètres sont supprimés de l'URL.

Comment puis-je résoudre ça?

Btw - les paramètres sont acceptables sur ce site (définis dans le fichier de fonctions avec add_custom_query_vars, ce n'est donc pas le problème).

1
Nori

Je pense que vous devriez encoder le & pour éviter des conflits potentiels:

http://domain.com/wp-login.php?redirect_to=http://domain.com/specificpage/?parameter1=dog&parameter2=dog&parameter3=cat
0
Pat_Morita

Option 1: Utilisation de wp_login_url($redirect):

wp_login_url prend un argument $redirect qui générera correctement le paramètre de requête redirect_to correctement codé:

echo '<a href="' . esc_attr( wp_login_url( "http://domain.com/specificpage/?parameter1=dog&parameter2=dog&parameter3=cat" ) ) . '">test</a>';

Cela imprimerait:

<a href="http://example.com/wp-login.php?redirect_to=http%3A%2F%2Fdomain.com%2Fspecificpage%2F%3Fparameter1%3Ddog%26parameter2%3Ddog%26parameter3%3Dcat">test</a>

Comme vous le pouvez, les caractères spéciaux tels que ? et & sont encodés en utilisant encodage en pourcentage en %3F et %26 (respectivement, pas une entité HTML telle que &amp; comme une autre réponse suggérée).

Option 2: Utilisation de http_build_query:

Si vous ne voulez pas utiliser wp_login_url mais un outil plus général qui s'applique aux requêtes de recherche en général, vous pouvez utiliser le PHP http_build_query , comme ceci:

echo '<a href="http://example.com/wp-login.php?' . esc_attr( http_build_query(['redirect_to' => 'http://domain.com/specificpage/?parameter1=dog&parameter2=dog&parameter3=cat']) ) . '">test</a>';

Cela imprimerait:

<a href="http://example.com/wp-login.php?redirect_to=http%3A%2F%2Fdomain.com%2Fspecificpage%2F%3Fparameter1%3Ddog%26parameter2%3Ddog%26parameter3%3Dcat">test</a>
0
Flimm