web-dev-qa-db-fra.com

Mémoriser la page avant la page de connexion, rediriger vers cette page après la connexion

J'ai un magasin de commerce qui ne permet qu'aux utilisateurs connectés de faire des achats. J'ai remplacé mon bouton Ajouter au panier par un bouton "Connexion" si l'utilisateur n'est pas déjà connecté. Cela les amène ensuite à la page (mon-compte) où ils peuvent choisir de se connecter ou de s'inscrire.

Cependant, je me demandais si je pouvais aller un peu plus loin et faire en sorte que wordpress se souvienne de la page sur laquelle l'utilisateur se trouvait avant d'entrer sur la page de connexion. Et s’ils se connectent, ils seront redirigés vers cette page.

J'ai trouvé ce script qui redirige les utilisateurs vers la page de connexion s'ils cliquent sur un produit/une page. Et puis, s'ils se connectent, cela les ramène à la page qu'ils essayaient d'entrer. Ceci est proche de ce que je veux faire, mais au lieu de les amener à la page de connexion avant de voir un produit. Je veux qu'ils puissent voir le produit. Cliquez ensuite sur un bouton qui les amène à la ((page de mon compte)) et s'ils se connectent, il les redirige vers la page du produit.

Rediriger l'utilisateur vers l'URL d'origine après la connexion?

Toute aide serait très appréciée. Fonction, plugins, n'importe quoi.

Merci!

2
Patrick

Vous pouvez utiliser la fonction de référence wordpress. Par exemple, définissez l'URL du référent dans la session en cliquant sur le bouton Ajouter au panier ou sur n'importe quel bouton pour stocker l'URL précédente. Une fois que vous vous êtes connecté ou que vous avez enregistré un succès, ajoutez Woocommerce success login à cet URL.

Pour plus d'informations, lisez l'URL du référent WordPress à lire ici;

https://codex.wordpress.org/Function_Reference/wp_get_referer

Pour la redirection de connexion à Woocommerce, lisez ici;

https://stackoverflow.com/questions/29342186/woocommerce-after-login-redirect

2
Karan

Pour tous ceux qui recherchent une solution à ce problème. Mon copain et moi l'avons résolu avec le script ci-dessous. Collez simplement dans votre fichier functions.php pour n’importe quelle configuration de woocommerce.

/** Log in redirect to previous page by portalpacific.net **/
// start global session for saving the referer url
function start_session() {
    if(!session_id()) {
        session_start();
    }
}
add_action('init', 'start_session', 1);

// get the referer url and save it to the session
function redirect_url() {
    if (! is_user_logged_in()) {
        $_SESSION['referer_url'] = wp_get_referer();
    } else {
        session_destroy();
    }
}
add_action( 'template_redirect', 'redirect_url' );

//login redirect to referer url
function login_redirect() {
    if (isset($_SESSION['referer_url'])) {
        wp_redirect($_SESSION['referer_url']);
    } else {
        wp_redirect(home_url());
    }
}
add_filter('woocommerce_login_redirect', 'login_redirect', 1100, 2);

/** end here */

Merci de nous avoir lancé Karen.

2
Patrick