1

以下のコードを使用してフロントエンド ログインを許可しています。ログインしているかどうかに応じて、異なるメニューが表示されます。

私が抱えている問題は、ユーザーがログインをクリックして別のページにリダイレクトされると、そこに表示されるメニューは正しいが、別のページをクリックすると、ログアウトしていなくても「ログインしていない」メニューに戻ることですボタンがクリックされました。

<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
  <p>
    <label for="user_login">
      <?php _e('Username') ?>
      <br />
      <input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" />
    </label>
  </p>
  <p>
    <label for="user_pass">
      <?php _e('Password') ?>
      <br />
      <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" />
    </label>
  </p>
  <?php do_action('login_form'); ?>
  <p class="forgetmenot">
    <label for="rememberme">
      <input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"<?php checked( $rememberme ); ?> />
      <?php esc_attr_e('Remember Me'); ?>
    </label>
  </p>
  <p class="submit">
    <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" />
    <?php   if ( $interim_login ) { ?>
    <input type="hidden" name="interim-login" value="1" />
    <?php   } else { ?>
    <input type="hidden" name="redirect_to" value="<?php bloginfo('url'); ?>/dashboard" />
    <?php   } ?>
    <input type="hidden" name="testcookie" value="1" />
  </p>
</form>

以下のコードは、ログインしているかログアウトしているかに応じて異なるメニューを表示するために、メニューの周りで使用しているものです。

<?php if ( is_user_logged_in() ) {
} else {
} ?>

ログインすると、セッションが破棄されているように見えます。最初は保存されますが、他のリンクをクリックするとセッションが破棄されます。

4

2 に答える 2

4

以下のように、少し違った方法で試してみてください。

 <?php 

  if(!is_user_logged_in()) {
         //no user logged in
      } else {
        // Hello!
      }
 ?>

編集: is_user_logged_in() にいくつかの問題があるようです: http://core.trac.wordpress.org/ticket/21043

もちろん、これを別のアプローチで行うこともできます。ユーザー情報を取得して、それをもとに変数をチェックしてみましょう。

<?php
    global $current_user; // Make it global
    get_currentuserinfo(); // Get the current user info
    $userID = $current_user->ID; // Get the User ID

    if($userID) { // Logged in because there is a User ID. 

        echo "Hello Mate";

    } else { // Logged out

        echo "Tumbleweed";
    } 
?>

これが私の環境で機能しなかったときに頭を悩ませていたので、同じブラウザーで管理者としてログインしていないことを確認してください。

後で何をするかに応じて、これを関数に入れることもできます。

于 2012-09-28T13:14:21.130 に答える
0

「theme my login」プラグインをインストールしてみてください。ログイン ページをフロントエンド ページにするだけでなく、クイック ログイン フォームを備えたウィジェットが追加されます。

于 2012-09-29T02:09:15.253 に答える