こんにちは
最初にアクセスされた URL を Cookie などに保存しておき、ログイン後にリダイレクトしてはどうでしょうか。
@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>';
} );
こんにちは。
昨日自己解決しましたので報告しておきます。
LightStart でのメンテナンス画面表示ではなく、ログイン画面へのリダイレクトとredirect_toパラメータを追加するという情報を参考にすると解決しました。
参考:https://stackoverflow.com/questions/41208491/redirect-to-referring-url-after-login-in-wordpress-sub-directory-install
お騒がせしました。ありがとうございました。