自动登录仅在第二次工作

时间:2013-02-26 作者:Cmorales

我想通过电子邮件链接将访问者自动登录到WP。我在他们的电子邮件中使用“userid”参数,并使用“redirect\\u to”参数来知道指向他们的位置。网站上有一些保护区,只供注册访客使用,如果他们不先登录,他们就看不到这些保护区(这就是自动登录的原因)。

我的问题是,自动登录工作正常,但只有第二次有人跟踪链接。否则,他们会收到一条消息,说明页面受到保护。我应该试试另一个钩子吗?

这是我的代码:

class zelfunctions
{

  public function __construct()
  {
    add_action( \'init\', array(&$this, "autologin"));
  }

  public function autologin(){
   if (!is_user_logged_in()) {

    $redirect = isset($_GET[\'redirect_to\']) ? esc_attr($_GET[\'redirect_to\']) : false; 
    $useremail = isset($_GET[\'userid\']) ? sanitize_user($_GET[\'userid\']) : false;
    if ($user = get_user_by( \'email\', $userid )) {
      wp_set_current_user($user->ID, $user->user_login);
      wp_set_auth_cookie($user->ID);
      do_action(\'wp_login\', $user->user_login);
      if (!$redirect) {
      //If there isn\'t any redirect set, just redirect to the home (already logged in)
         $final_url = home_url(\'/\');
      } else {
         $final_url = home_url(\'/\'). $redirect;
      }
      wp_redirect($final_url);
      exit;
      }
    } 

  }
} 

1 个回复
最合适的回答,由SO网友:Matt van Andel 整理而成

这个init 钩子太早了,所以is_user_logged_in() 检查失败。

尝试使用wp_head 改为挂钩(优先级为-1)。退出/退出功能仍将阻止页面加载,但将为您提供更多访问可能需要评估的关键全局数据的权限。

示例:

add_action( \'wp_head\', array(&$this, "autologin"), -1);

结束

相关推荐

如何设置用户在wp-login登录后被重定向到哪里?

所以我很确定这可能与我使用在函数中设置的自定义角色有关。几乎拥有0权限的php文件。然而,我仍然可以访问仪表板,只要我被发送到个人资料。php登录,而不是仪表板。我希望每次都将我的user\\u角色发送到仪表板,因为我在那里为它们设置了一个自定义小部件。我似乎在抄本中找不到函数,也找不到必要的钩子来设置它?如果我使用的是自定义登录表单wp_login_form() 但是我只想使用默认的登录表单,而不需要修改管理文件,这样它就不会受到更新的影响。任何人都知道我需要的功能。Cant似乎为谷歌提供了正确的术语。