サポート » プラグイン » 【LightStart】ログイン後最初にクリックした記事に戻りたい

  • 解決済 KonpeitoRO

    (@konpeitowp)


     お世話になっております。

     私は非公開ブログにつき、このトピックを参考に「LightStart – Maintenance Mode, Coming Soon and Landing Page Builder」(旧WP Maintenance Mode)でメンテナンス画面を表示させています。メンテナンス画面にはログインページへのリンクを貼っており、そこから購読者権限のユーザー名とパスワードを入力してログインするとトップページが表示されます。ただメールマガジンやフィードなどで、読者の方がリンクをクリックするなどし、メンテナンス画面が表示され、画面内のリンクからログインし、もう一度リンクをクリックするというのは面倒なので、ログイン後表示される画面をトップページではなく、最初にクリックや入力した記事にリダイレクトするということは可能でしょうか?方法も含めてご教示いただければ幸いです。LightStart プラグインのバージョンは「2.6.2」で、WordPress 本体のバージョンは「6.1.1」です。

     一応概要はにもまとめてあります。

     よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    最初にアクセスされた URL を Cookie などに保存しておき、ログイン後にリダイレクトしてはどうでしょうか。

    トピック投稿者 KonpeitoRO

    (@konpeitowp)

     

     @munyagu さん、ご返信いただきありがとうございます。

    最初にアクセスされた URL を Cookie などに保存しておき、ログイン後にリダイレクトしてはどうでしょうか。

     私はプログラミング初心者なのですが、最初にアクセスされたURLを Cookie などに保存するという方法がよく分かっていません。また最初にアクセスされたURLというのは、ログインしていない状態でメールなどのリンクをクリックしたときのURLを取得したいわけです(もしそのご認識であれば申し訳ありません)。

     ネット情報を参考にして以下のようなコードを書いてみましたが、メンテナンス画面にリダイレクトされた時点でURLが変わっているためか、ログイン後トップページが表示されてしまいました。

    // ログイン後のリダイレクト
    $protocol = empty($_SERVER["HTTPS"]) ? "http://" : "https://";
    $thisurl = $protocol . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    $protocol = empty($_SERVER["HTTPS"]) ? "http://" : "https://";
    $thisurl = $protocol . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    setcookie('sourceurl', $thisurl, time() + 3600);
    function custom_login_redirect() {
    	return $thisurl;
    	}
    add_filter('login_redirect', 'custom_login_redirect');

     もしよければご教示いただければ幸いです。

    元の URL はもちろんログイン画面へのリダイレクト前に取得する必要があります。

    ログイン画面にリダイレクトされた際には Cookie に URL をセットしないようにする必要があります。

    また、元のURLに リダイレクトしたら Cookie を削除しないと、直接ログイン画面にアクセスされてログインした場合に意図しないリダイレクトが発生することがあります。

    Cookieに保存しているのはセキュアな情報ではないので Cookie のセキュリティについてあまり気にしなくても良さそうですが、気になるようでしたら検索して調べて対応してみてください。

    こんにちは

    メンテナンス画面に表示しているログイン ページのリンクに redirect_to パラメーターを追加するのはどうでしょうか。

    ログイン ページのリンクをショートコードで出力する場合の例:

    add_shortcode( 'link_login_page', function() {
    	$redirect_to = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    	return '<a href="' . esc_url( wp_login_url( $redirect_to ) ) . '" title="ログイン">ログイン</a>';
    } );
    
    トピック投稿者 KonpeitoRO

    (@konpeitowp)

     すみません。

     私には分からないので、一旦置きます。

     ありがとうございました。

    トピック投稿者 KonpeitoRO

    (@konpeitowp)

     こんにちは。

     昨日自己解決しましたので報告しておきます。

     LightStart でのメンテナンス画面表示ではなく、ログイン画面へのリダイレクトとredirect_toパラメータを追加するという情報を参考にすると解決しました。

    参考:https://stackoverflow.com/questions/41208491/redirect-to-referring-url-after-login-in-wordpress-sub-directory-install

     お騒がせしました。ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「【LightStart】ログイン後最初にクリックした記事に戻りたい」には新たに返信することはできません。