建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

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

GG网络技术分享 2025-03-18 16:04 3


安装网页
首先准备两个域名和一个web环境。 我的测试环境是宝塔。

主站A
域名:a.test.com
数据库名称:test
数据库用户:mytest
数据库用户密码:test123
数据表前缀:a_
从B站
域名:b.test.com
数据库名称:test
数据库用户:mytest
数据库用户密码:test123
数据表前缀:b_
先安装A站,使用A站的上述配置信息,安装完成后再安装B站,B站也使用上述信息。 注意:为了实现数据共享,我们必须把两个站的数据表放在同一个数据库中,我上面用的test数据库。

修改wordpress配置
为了共享用户数据,我们必须将两个站使用的数据表制作成a_user和a_usermeta。 或者都用b_user和b_usermeta,我用A为主站,所以需要把B站使用的b_user和b_usermeta数据表改成a_user和a_usermeta数据表。

打开B站wordpress根目录下的wp_config.php配置文件,在里面添加如下配置:

define('CUSTOM_USER_TABLE', 'a_users');

define('CUSTOM_USER_META_TABLE', 'a_usermeta');

这两个句子的配置重新声明了_user 和_usermeta 数据表的名称。 在这里,我将它们更改为需要共享数据的表的名称。 我用的是A站的用户数据。

至此,你的A站和B站的用户数据共享已经完成,你可以使用A站的用户数据进行注册和登录,但是wordpress在_usermeta表中有用户权限的记录。 这一步,你的B站是可以使用A站的用户数据登录,但是不能访问后台,访问会提示用户权限不够。

自动添加用户权限
当你完成上述步骤后,你的a_usermeta数据表并没有记录用户对站点B的访问权限,为了让站点A的管理员用户拥有站点B的管理权限,我们需要在a_usermeta数据表中插入以下权限记录:

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数据表中a_capabilities记录前面的复制链接,其中meta_key的值为a_capabilities,phpmyadmin会自动跳转到insert函数并填写对应的值,只需要修改前缀,点击执行即可。

这里我们使用手动方法授予用户访问站点 B 的权限。我们不能手动为每个用户授予权限。 然后我们可以使用下面的代码在注册时自动授予权限。

标签: WordPress 教程

提交需求或反馈

Demand feedback