WordPress实现用户自动登录

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

     在多人共用一个帐号的情况下,有这样一种需求,我不需要知道WordPress的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢?

方法一:wp_signon()

     在主题中使用WordPress内置函数 wp_signon() ,可将用户名和密码直接放到代码中,无需再去要求用户输入,快捷登录,省时省力:

if (!is_user_logged_in()) {
  $creds = array();
  $creds['user_login'] = 'example'; // 用户名是example,自行修改
  $creds['user_password'] = 'plaintextpw'; // 密码是plaintextpw
  $creds['remember'] = true;
  $user = wp_signon( $creds, false );
  if ( is_wp_error($user) )
    echo $user->get_error_message();
}

     将以上代码应用到你的WordPress中即可实现自动登录功能

方法二:无密码方式

     现在有种更好的实现方法,不需要知道帐号密码,只需指定用户名即可,实现代码:

if (!is_user_logged_in()) {
  $user_login = 'example'; // 用户名是example,自行修改

  // 获取用户id
  $user = get_userdatabylogin($user_login);
  $user_id = $user->ID;
  
  // 登录
  wp_set_current_user($user_id, $user_login);
  wp_set_auth_cookie($user_id);
  do_action('wp_login', $user_login);
}

特别说明

     如果将方法一或方法二的代码,直接放到主题的functions.php中,那么只要打开前台任何页面,就会自动登录到你设置的用户名下。本文只是提供自动登录的方法,至于是放到单独一个php文件,还是加token验证等等你认为比较安全的方式,怎么用就得看具体的需求了。

     当多个用户共用一个帐号的情况下,如果你想禁止其他人编辑这个帐号的资料(如密码),可以参考这篇文章:WordPress禁止某用户编辑个人资料

     如果你想禁止这个公用帐号修改密码,可以参考:WordPress禁止特定用户修改密码

参考文章

     Function Reference/wp signon
     WordPress Auto-Login

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-auto-login.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

17 条留言

点此留言
  1. 子说 子说

    应该自定义一个Token,然后以http://你博客地址/?Token这样的形式登陆。这样才安全

    • Ludou

      @子说 本文只是提供自动登录的方法,至于是放到单独一个php文件,还是加token验证… 怎么用就得看具体的需求了。

  2. ilikecss ilikecss

    个人博客貌似用不大到,有点风险额

  3. 冠宇 冠宇

    为什么快速填写博客昵称和邮箱,网址的代码在你的网站上不管用呢

    • Ludou

      @冠宇 本站的评论表单域已经更改,不适合你的通用方法。
      填过一次后,会有cookie记录。

      • 阿策 阿策

        @Ludou 路兜,你这个回复像登陆了一样是怎么实现的呢?有没有对应的修改博文呢?发现你太强大了,每次找方法都找到你这里.

      • 阿策

        @Ludou 路兜,我昨天向您询问的就是您评论回复框的这种cookie记录+javascript的实现方法。可以公布出来给大家分享学习一下吗?

        • Ludou

          @阿策 上网搜索:WordPress ajax 评论
          另外,非路兜

  4. 小叉子 小叉子

    不安全吧

  5. 西贝博客 西贝博客

    只要添加这些代码就可以了吗?

  6. 野蛮人 野蛮人

    要是被坏人发现了咋办啊?坏人会拿这个号大量发布垃圾信息哦@

  7. 木房子 木房子

    这样有风险吧。主要适用于哪种类型的博客呢?

  8. laiydesign

    只需指定邮箱,如何登录?

    • 露兜

      @laiydesign 可参考:https://www.ludou.org/wordpress-login-with-usernam-or-email.html

  9. niices niices

    博主你好,我在使用你这个方法的时候遇到一个问题,其他管理员用户在第一次登录的时候也会以这公共账号进行登录,有没有什么办法判断一下,以特定的链接登录是才用这个公共账号登录,而以其他链接登录的时候直接显示登录框输入密码再登录? 求解

    • 露兜

      @niices 自己在链接上加个get参数,然后再判断即可

发表留言