Rediriger vers la page de référence après la connexion
-
-
Avez-vous déjàtrouvé une solution à ceproblème?J'ai lemêmeproblème!Did you ever find a solution to this problem? I am having the same issue!
- 0
- 2015-06-07
- Tom Nolan
-
@ThomasNolan Enfait,j'ai utilisé une variabletemporaire!`;)`@ThomasNolan Actually I used a temporary variable! `;)`
- 0
- 2015-06-08
- Praveen Kumar Purushothaman
-
4 réponses
- votes
-
- 2014-11-27
Jene suispas sûr de comprendre votre configuration,mais voici quelquesidées:
A) Afficher un lien de connexion avec lejeu deparamètres
redirect_to
:Vouspouvez ajouter les éléments suivants à vospages demodèlespersonnalisés:
if( ! is_user_logged_in() ) { printf( '<a href="%s">%s</a>', wp_login_url( get_permalink() ), __( 'You need to login to view this page!' ) ); }
Celagénérera un lien de connexion,pour les visiteurs anonymes,avec lapage actuelle dans leparamètre
redirect_to
GET.B) Redirection vers le
wp-login.php
avec lejeu deparamètresredirect_to
:Notez que l'appel à
wp_redirect()
doit avoir lieu avant l'envoi desen-têtes HTTP.Nouspouvons l'appeler dans le hook
template_redirect
:add_action( 'template_redirect', function() { if( ! is_user_logged_in() && is_page( array( 'member-page-1', 'member-page-2' ) ) ) { wp_safe_redirect( wp_login_url( get_permalink() ) ); exit(); } } );
oùnous limitons l'accès auxpages avec les slugs
member-page-1
etmember-page-2
.C) Leformulaire de connexionnatif (en ligne):
Une autre option serait d'inclure leformulaire de connexionnatif,directement dans le contenu de lapage:
add_filter( 'the_content', function( $content ) { if( ! is_user_logged_in() && is_page( array( 'member-page-1', 'member-page-2' ) ) ) $content = wp_login_form( array( 'echo' => 0 ) ); return $content; }, PHP_INT_MAX );
oùnous limitons l'accès auxpages avec les slugs
member-page-1
etmember-page-2
.Notez que vous devrez vous occuper despages d'archive/d'index/de recherche.
Mise àjour: Je l'ai simplifiéeen utilisant
wp_login_url()
fonction.I'm not sure I understand your setup, but here are few ideas:
A) Display a login link with the
redirect_to
parameter set:You could add the following to your custom template pages:
if( ! is_user_logged_in() ) { printf( '<a href="%s">%s</a>', wp_login_url( get_permalink() ), __( 'You need to login to view this page!' ) ); }
This will generate a login link, for anonymous visitors, with the current page in the
redirect_to
GET parameter.B) Redirect to the
wp-login.php
with theredirect_to
parameter set:Notice that the call to
wp_redirect()
must happen before the HTTP headers are sent.We can call it within the
template_redirect
hook:add_action( 'template_redirect', function() { if( ! is_user_logged_in() && is_page( array( 'member-page-1', 'member-page-2' ) ) ) { wp_safe_redirect( wp_login_url( get_permalink() ) ); exit(); } } );
where we restrict the access to pages with the slugs
member-page-1
andmember-page-2
.C) The native login form (in-line):
Another option would be to include the native login form, directly into the page content:
add_filter( 'the_content', function( $content ) { if( ! is_user_logged_in() && is_page( array( 'member-page-1', 'member-page-2' ) ) ) $content = wp_login_form( array( 'echo' => 0 ) ); return $content; }, PHP_INT_MAX );
where we restrict the access to pages with the slugs
member-page-1
andmember-page-2
.Notice you would have to take care of the archive/index/search pages.
Update: I simplified it by using the
wp_login_url()
function.-
Je donne déjà le `redirect_to` au` login.php`.Vérifiez la réponsemise àjour.Mais après la connexion,il va simplement à `mon-compte`,qui doit être remplacépar` redirect_to`.I already give the `redirect_to` to the `login.php`. Check the updated answer. But post logging in, it just goes to `my-account`, which has to be replaced with `redirect_to`.
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
Notez que vous devez utiliser `wp_redirect` avant l'envoi desen-têtes HTTP.Vous voudrezpeut-être utiliser l'action `template_redirect`,parexemple.Notice that you must use `wp_redirect` before the HTTP headers are sent. You might want to use the `template_redirect` action, for example.
- 0
- 2014-11-27
- birgire
-
D'accord,où seproduit la redirection ()?Okay, where does the `redirect()` happen?
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
Le `wp_redirect ()`estenfichablemais vouspouvez également accéder aufiltre `wp_redirect`.The `wp_redirect()` is pluggable but you can also access the `wp_redirect` filter.
- 0
- 2014-11-27
- birgire
-
Jene comprendspas.Sensenfichable?I don't understand. Pluggable meaning?
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
Vouspouvez le remplacer avec votreproprefonction `wp_redirect ()`,maisje ne le recommandepas.You can override it with your own `wp_redirect()` function, but I don't recommend that.
- 0
- 2014-11-27
- birgire
-
Bonne réponse,maisje n'aipas réussi àtravailler sur unepage de connexionpersonnalisée!Nice answer, but didn't manage to work on a custom login page!
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
Si votre `login.php`personnaliséfonctionne avec leparamètre` redirect_to`,alorsje pense que vous devriezpouvoir simplement remplacer `wp-login.php`par` login.php` dans l'extrait de code ci-dessus.PS: Je suppose que vous utilisez despages WordPresset non desfichiers PHPnus.If your custom `login.php` works with the `redirect_to` parameter, then I think you should be able to just replace `wp-login.php` with `login.php` in the above code snippet. PS: I'm assuming you're using WordPress pages and not bare PHP files.
- 0
- 2014-11-27
- birgire
-
La connexionpersonnaliséene fonctionnepas.L'original `wp-login.php`fonctionne avec la redirection.Custom login only doesn't work. The original `wp-login.php` works with redirection.
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
Celane fonctionnepas,maisj'accepte la réponsepour votretravail acharné.Je continue cela dans [StackOverflow] (http://stackoverflow.com/questions/27171650/wordpress-redirect-to-referring-page-after-logging-in).Pouvez-vous venir là-bas?This doesn't work, yet I am accepting the answer for your hard-work. I am continuing this in [StackOverflow](http://stackoverflow.com/questions/27171650/wordpress-redirect-to-referring-page-after-logging-in). Can you come there?
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
okmerci,il semble que vous ayeztrouvé une solution Javascript quifonctionnepour vous là-bas.ok thanks, it looks like you found a Javascript solution that works for you over there.
- 1
- 2014-11-27
- birgire
-
Ouimonpote,c'étaitmonerreur.Le code surmesure était un code JavaScript!`:)`Yes buddy, it was my mistake. The bespoke code was a JavaScript one! `:)`
- 0
- 2014-11-27
- Praveen Kumar Purushothaman
-
- 2015-12-01
Usgin
get_permalink()
,comme suggéré dans la réponse acceptée,ne fonctionnera que si vous êtes dans unmessage (detouttype)mais celane fonctionnerapas,parexemple,si vous êtesune archive de catégories.Pour lefairefonctionnern'importe où,l'URL actuelleestnécessaire,quel que soit letype de contenu quenous voyons.Pour obtenir l'URL actuelle dans WordPress,nouspouvons obtenir la requête actuelle de l'objetglobal
$wp
et l'ajouter à l'URL du siteen utilisantadd_query_arg()
.Nouspouvons utiliser le résultat dans leparamètreredirect_to
de lafonctionwp_login_url()
:wp_login_url( site_url( add_query_arg( array(), $wp->request ) ) );
Lamême approchepeut être utilisée avec
wp_logout_url()
sinécessaire:wp_logout_url( site_url( add_query_arg( array(), $wp->request ) ) );
Usgin
get_permalink()
, as suggested in the accepted answer, will work only if you are in a post (of any type) but it won't work, for example, if you are in a category archive. To make it work anywhere, the current URL is needed, not matter what type of content we are seeing.To get the current URL in WordPress we can get the current request from the global
$wp
object and append it to the site url usingadd_query_arg()
. We can use the result in theredirect_to
parameter ofwp_login_url()
function:wp_login_url( site_url( add_query_arg( array(), $wp->request ) ) );
The same approach can be used with
wp_logout_url()
if needed:wp_logout_url( site_url( add_query_arg( array(), $wp->request ) ) );
-
Leprojetestmortil y a un an.Ehbien,quelest l'intérêt de répondremaintenant?Coz avez-vousmême lu la réponseprécédente acceptée?The project died an year ago. Well, what's the point of answering now? Coz did you even read the previous accepted answer?
- 0
- 2015-12-01
- Praveen Kumar Purushothaman
-
Oui,j'ai lu la réponseprécédenteet jepense queje pourrais donner unemeilleure réponse,peut-êtrepaspour vousmaispour les autres.Notez que ce site (ettous les sites StackExchangeen général)est utilisé comme référencepar desmilliers depersonneset ilspeuvent obtenir des réponses obsolètes;c'estpourquoi donner denouvelles réponses oumettre àjour d'anciennes réponsesesttoujourstrèsbienvenu.** N'oubliezpas que l'aide que vous obtenezicin'estpas seulementpour vous **.Yes, I read the previous answer and I think I could give a better answer, maybe not for you but for others. Note that this site (and any of the StackExchange sites in general) is used as reference by thousands of people and they can get outdated answers; that is why giving new answers or updating old answers is always very wellcome. **Remember taht the help you get here is not only for you**.
- 0
- 2015-12-01
- cybmeta
-
Ha ha ... Mec,je détiens 62k dans StackOverflow.Je comprends ce quetu veux dire.C'est un codepersonnalisé qui amaltourné,et jene suispas sûr que cela aidera?Est-ce que cela va?Si oui,mercibeaucoup.Ha ha... Man, I hold 62k in StackOverflow. I understand what you mean. That's a custom code gone wrong, and I am not sure it will help? Will it? If so, Thank you so much.
- 1
- 2015-12-01
- Praveen Kumar Purushothaman
-
Je suis convaincu que celapeut aider.Parexemple,[cette autre question] (http://wordpress.stackexchange.com/questions/210374/how-to-place-login-logout-link-on-menu-that-redirects-users-back-to-current-page) a étémarquéil y a quelquesminutes comme dupliqué de celui dontnous discutons.I have no doubt that it can help. For example, [this other question](http://wordpress.stackexchange.com/questions/210374/how-to-place-login-logout-link-on-menu-that-redirects-users-back-to-current-page) has been marked a few minutes ago as duplicated of the one we are discussing.
- 1
- 2015-12-01
- cybmeta
-
Ha ha ... Trèsbien.J'abandonne.Vous avez raison!`:)`Ha ha... Fine. I give up. You are right! `:)`
- 1
- 2015-12-01
- Praveen Kumar Purushothaman
-
- 2016-07-06
Vouspouvez également utiliser ce code dans votrepage de connexionpersonnalisée
if ( ! is_user_logged_in() ) { // Display WordPress login form: $args = array( 'redirect' => esc_url($_SERVER['HTTP_REFERER']), 'form_id' => 'loginform-custom', 'label_username' => __( 'Email' ), 'label_password' => __( 'Password' ), 'label_log_in' => __( 'Log In' ), 'remember' => false ); wp_login_form($args); echo '<p><a href="' . wp_lostpassword_url($redirect) .'">Lost Password</a></p>'; }
Cela redirigera l'utilisateur vers lapage de référence,après la connexion.
You can also use this code in your custom login page
if ( ! is_user_logged_in() ) { // Display WordPress login form: $args = array( 'redirect' => esc_url($_SERVER['HTTP_REFERER']), 'form_id' => 'loginform-custom', 'label_username' => __( 'Email' ), 'label_password' => __( 'Password' ), 'label_log_in' => __( 'Log In' ), 'remember' => false ); wp_login_form($args); echo '<p><a href="' . wp_lostpassword_url($redirect) .'">Lost Password</a></p>'; }
This will redirect the user to referrer page, after login.
-
Cela a étépublié comme réponse,maisilne tentepas de répondre à la question.Cela devrait éventuellement être unemodification,un commentaire,une autre question ou une suppressiontotale.This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
- 1
- 2016-07-06
- Praveen Kumar Purushothaman
-
Cela répond à la question.Vouspouvez voir que l'utilisateurest redirigé vers lapage de connexionpersonnalisée ` Php if (!is_user_logged_in ()) wp_redirect ('/login/'); ?> `This does answer the question. You can see that the user is redirected to custom login page ``
- 0
- 2016-07-06
- KKumar
-
Veuillez vérifier la solution de la question dans [StackOverflow] (http://stackoverflow.com/questions/27171650/wordpress-redirect-to-referring-page-after-logging-in) ...Kindly I would like to check the question's solution in [StackOverflow](http://stackoverflow.com/questions/27171650/wordpress-redirect-to-referring-page-after-logging-in)...
- 0
- 2016-07-06
- Praveen Kumar Purushothaman
-
- 2020-01-20
Je sais qu'ilesttard,maisje publie la solutionpour qu'ellepuisse aider quelqu'un dans lebesoinen cemoment.
C'est ce queje faiset celafonctionneparfaitement.
function redirect_user_tologin(){ global $post; $post_slug = $post->post_name; if(!is_user_logged_in()){ if($post_slug == 'my-account') { //can add multiple conditions //create dynamic redirect page link $redirect = urlencode(site_url().'/'.$post_slug); //redirection wp_safe_redirect(site_url().'/wp-login.php/?redirect_to=' .$redirect); exit; } } } add_action('wp', 'redirect_to_login');
Explication
Si l'utilisateurn'estpas connecté,
wp_safe_redirect
l'amènera à lapage de connexion.Afin de rediriger l'utilisateur après la connexion,nouspasserons le lien de lapageen tant que valeur dans leparamètre
redirect_to
afin qu'il amène l'utilisateur à cettepageparticulière.URL de lapage de connexion:
site_url().'/wp-login.php/
Lien de redirection vers lapage:
redirect_to=' .$redirect
I know it's late, but I am posting the solution so that it can help someone in need at the moment.
This is what I am doing and it is working perfectly.
function redirect_user_tologin(){ global $post; $post_slug = $post->post_name; if(!is_user_logged_in()){ if($post_slug == 'my-account') { //can add multiple conditions //create dynamic redirect page link $redirect = urlencode(site_url().'/'.$post_slug); //redirection wp_safe_redirect(site_url().'/wp-login.php/?redirect_to=' .$redirect); exit; } } } add_action('wp', 'redirect_to_login');
Explanation
If user is not logged in than
wp_safe_redirect
will take user to login page.In order to redirect user after login, we will pass page link as value in
redirect_to
parameter so that it will take user to that particular page.Login page url:
site_url().'/wp-login.php/
Redirect page link:
redirect_to=' .$redirect
-
Je vous remercie...Thank you...
- 0
- 2020-01-21
- Praveen Kumar Purushothaman
Jen'utilise aucunplug-in de connexionpersonnaliséni aucun code surmesure. Certaines demespages contiennent cemorceau de code autout début.
Désormais,lorsqu'un utilisateur accède à l'une despages ci-dessus,sans se connecter,il redirige vers lapage de connexion,et lorsque l'utilisateur se connecte,il le renvoie vers
my-account/
page.Je souhaitemodifier le scénario actuelpour que l'utilisateur soit redirigé vers lapage de référence,d'oùil vient. J'aiessayé les choses suivantes,quin'ontjamaisfonctionné.
Utilisation d'un
HTTP_REFERRER
Dans leformulaire
login/
,j'aiplacé cebit de code:Piratage de
functions.php
Dans le
functions.php
,j'aiplacé cebit de code:J'ai égalementessayé ceux-ciet j'ai échoué:
Rienne fonctionnait. Je suis heureux defournir deplus amples détails sinécessaire. Merci d'avance.
:)
Mise àjour
J'aimodifié le code de cettefaçon:
Ceci rend lapage de connexion de cettefaçon:
Celame suffiraitpourm'authentifieret rediriger. Maisj'aibesoin detrouver lebit où la vraie redirection seproduitet je veux la redirigeren utilisant leparamètre
redirect_to
!