WordPress教程

WordPress多个网站点之间共用用户数据表的实现方法

阿里云

WordPress 为网站系统提供了相同的数据表结构,为快速实现多个 WordPress 网站之间共享用户数据提供了可能。WordPress 如何实现如网易通行证等大站一样的共享用户登录呢?只需要将需要共享的数据库共用即可,我们这里只需要共享 _user 与 _usermeta 表,下面是完整实现过程。

首先,准备两个域名及 web 环境,我的测试环境是宝塔。

也想出现在这里?联系我们
创客主机
  1. 主站A
  2. 域名:a.test.com
  3. 数据库名称:test
  4. 数据库用户:mytest
  5. 数据库用户密码:test123
  6. 数据表前缀:a_
  7. 从站B
  8. 域名:b.test.com
  9. 数据库名称:test
  10. 数据库用户:mytest
  11. 数据库用户密码:test123
  12. 数据表前缀:b_

先安装 A 站,使用上述 A 站配置信息,安装完毕后,再安装 B 站,B 站也使用上述信息。注意:为了实现数据共享,我们必须将两个站的数据表都放在同一个数据库中,上面我用的 test 数据库。

修改配置

为实现共用用户数据,我们必须让两个站使用的数据表都为 a_user 与 a_usermeta。或者都使用 b_user 与 b_usermeta,我这里使用的 A 作为主站,所以我需要把 B 站使用的 b_user 与 b_usermeta 数据表改为使用 a_user 与 a_usermeta 数据表。

打开 B 站 wordpress 根目录下的 wp_config.php 配置文件,在其中加入如下配置:

  1. define('CUSTOM_USER_TABLE', 'a_users');
  2. define('CUSTOM_USER_META_TABLE', 'a_usermeta');

这两句配置重新声明了 _user 与 _usermeta 数据表的名称,这里将其改为需要共享数据的表名称,我是用的是 A 站的用户数据。

到此,你的 A、B 两站用户数据共享已经完成,都可以使用 A 站点的用户数据注册登录,但 wordpress 在 _usermeta 表中有对用户权限的记录,到这一步,你的 B 站虽然可以使用 A 站的用户数据登录,但不能访问后台,访问会提示用户权限不够。

添加权限

当你完成上面的步骤时,你的 a_usermeta 数据表中,并没有记录用户对 B 站点的访问权限,为了使 A 站点的管理员用户能拥有 B 站点的管理权限,我们需要在 a_usermeta 数据表中插入如下权限记录:

  1. INSERT INTO `test`.`a_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '1', 'b_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');

在这里解释下,在 _usermeta 数据表中 meta_key 的值为 _capabilities 的记录项就是记录的用户权限,其前缀代表了权限是哪个站点的。由于我的管理员账号是建站时建立的,所以 user_id 为 1。administrator 表示管理员权限,其它权限见 WordPress 移除用户角色添加新角色并赋予角色能力/权限一文。

通过上面的 mysql 命令,插入用户对 B 站点的权限后,我们就可以正常访问 B 站的后台了。注意:记得清理 cookies!

如果不会 MySQL,你也可以使用 phpmyadmin 使用鼠标点击 a_usermeta 数据表中 meta_key 值为 a_capabilities 记录项前面的复制链接,phpmyadmin 会自动跳转到插入功能并填入相应值,你只需要修改前缀再点击执行即可。

这里我们使用的是手动的方式来赋予用户对 B 站点的访问权限,我们不可能手动为每一位用户赋予权限,那么我们可以使用如下代码来实现注册时自动赋予权限。

WordPress 多个网站点之间共用用户数据表的实现方法

已有 313 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!