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

方法一:wp_signon()

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

将代码修改粘贴到你当前主题的 functions.php 中即可实现自动登录功能:

1
2
3
4
5
6
7
8
9
10
//WordPress用户自动登录
if (!is_user_logged_in()) {
  $creds = array();
  $creds['user_login'] = 'demo'; //用户名是demo,自行修改
  $creds['user_password'] = 'password'; //密码是password
  $creds['remember'] = true;
  $user = wp_signon( $creds, false );
  if ( is_wp_error($user) )
    echo $user->get_error_message();
}

方法二:无密码方式

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

1
2
3
4
5
6
7
8
9
10
11
12
13
//WordPress用户自动登录
if (!is_user_logged_in()) {
  $user_login = 'demo'; // 用户名是demo,自行修改
 
  // 获取用户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 禁止特定用户修改密码

发表评论
登录后参与评论
专注 WordPress 网站优化解决方案! 加入我们