web-dev-qa-db-ja.com

ログインページの前にページを記憶し、ログイン後にそのページにリダイレクトする

ログインしているユーザーにのみ購入を許可するウーコマースショップがあります。ユーザーがまだログインしていない場合は、[カートに追加]ボタンを[ログイン]ボタンに置​​き換えました。これにより、ログインまたは登録を選択できる(my-account)ページに移動します。

しかし、私はこれをもう一歩進めて、ログインページに入る前にWordpressがユーザーがどのページにいたかを覚えているようにすることができるかどうかと思いました。そして彼らがログインすれば、それはそれらをそのページにリダイレクトします。

ユーザーが製品/ページをクリックした場合に、ユーザーをログインページにリダイレクトするこのスクリプトを見つけました。そして、もし彼らがログインすればそれは彼らが入ろうとしていたページにそれらを連れ戻します。これは私がやりたいことに近いですが、製品を見る前にログインページに移動するのではなく。彼らに商品を見てもらいたいのです。それからそれらを((my-account page))に持って行くボタンをクリックしてください、そして彼らがログインすればそれは製品ページにそれらをリダイレクトします。

ログイン後にユーザーを元のURLにリダイレクトしますか?

どんな助けでも大いに感謝するでしょう。機能、プラグイン、なんでも。

ありがとうございます。

2
Patrick

あなたはワードプレスの参照機能を使用することができます。たとえば、カートに追加ボタンまたは前のURLを保存するための任意のボタンをクリックして、参照元URLをセッションに設定します。ログインまたは登録に成功したら、そのURLにWoocommerce success loginリダイレクトを追加します。

詳しくはWordPressの参照元URLをお読みください。

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

Woocommerceログインリダイレクトについてはここを読んでください。

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

2
Karan

これに対する解決策を探している誰にとっても。私のボーイフレンドと私は以下のスクリプトでそれを解決しました。あらゆるwoocommerce設定のためにあなたのfunctions.phpファイルに単に貼り付けなさい。

/** 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 */

カレンを始めてくれてありがとう。

2
Patrick