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

尝试安装“主题我的登录”插件,除了将您的登录页面设置为前端页面外,它还会添加一个带有快速登录表单的小部件。

于 2012-09-29T02:09:15.253 回答