デザイン事務所ダウンアンダー

theme-my-loginとwp-membersのリダイレクト問題。

WordPressのtheme-my-loginのリダイレクトに関する問題です。

話を単純にするため、「購読者」にはログインページのみしか見せない設定にしたとします。

  • ダッシュボードのTMLで「Custom Redirection を有効にする」にチェックを入れます。
  • 「リダイレクト」タブでカスタム設定をし、「ログイン」は案内ページ、「ログアウト」は「Login」ページを指定します。

実際に購読者ユーザーを作成し、ログイン・ログアウトすると想定通りの動作をします。

次にwp-membersを有効化します。

すると、ログインする「Login」ページに移動します。この動作が意外と不安定で、管理者でログインすると(デフォルト設定ならダッシュボードに入るはずが)Loginページに行ったり案内ページに飛んだりします。

そもそもwp-membersにはリダイレクト機能がありませんので、機能上のコンフリクトを起こしているとしか思えないのですが・・。wp-membersを停止すると、またちゃんと動くんですよねえ。

そこで、いっそtheme-my-loginの「ページブロック機能」を使うことを止めてしまいました!よく考えれば「ブロック機能」自体がリダイレクトですものねえ。

※全ページをログインユーザー以外には見せない場合にしか使えない方法です。

header.phpの最初の行に以下を挿入します。

  • <?php
  • if (is_user_logged_in() && is_page(‘login’)) { //ログインしていてloginページにいたら強制的に/へ
  • header(“Location: /”);
  • exit();
  • }
  • if (!is_user_logged_in() && !is_page(‘login’)) { //ログインしていない・かつログインページでは無い
  • header(“Location: /login/”);
  • exit();
  • }
  • ?>

 「表示設定」で、フロントページを最初に表示したいページを指定しておいてください。

 

  • <?php
  • if (is_user_logged_in() && is_page(‘login’)) { //ログインしていてloginページにいたら強制的に/へ
  • header(“Location: /”);
  • exit();
  • } else {
  • header(“Location: /login/”);
  • exit();
  • }
  • ?>

でも良さそうですが、リダイレクトループが発生してしまいす。

この記事は2013/05/18に公開され、253 views読まれました。

     技術ノート   

最近1ヶ月で人気の記事

theme-my-loginとwp-membersのリダイレクト問題。 - デザイン事務所ダウンアンダー 東京都練馬区。Wordpressはおまかせ。ホームページ・印刷など販売促進のためのデザインを提案します。

Copyright©デザイン事務所ダウンアンダー, All Rights Reserved.