专栏首页许都博客如何在WordPress网站之间共享用户和登录

如何在WordPress网站之间共享用户和登录

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

安装web

首先,准备两个域名及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数据表中meta_key值为a_capabilities记录项前面的复制链接,phpmyadmin会自动跳转到插入功能并填入相应值,你只需要修改前缀再点击执行即可。

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

//设置主站的前缀,其它网站都共享该网站的用户数据表
$main_prefix = 'a_';
 
//设置子站的前缀,例如有两个子站,前缀分别为wpen_和wpcn_
$addi_prefixs = array('b_','c_');
 
//添加功能到用户注册的钩子里
add_action( 'user_register', 'dup_capabilities' );
 
function dup_capabilities( $user_id ) {
 
global main_prefix, addi_prefixs;
 
//获取该用户权限的值,因为不同角色的值是不同的
if( cap_val = get_user_meta( user_id, 
 
if( count( $addi_prefixs ) > 0 ) {
 
foreach( addi_prefixs as prefix ) {
 
add_user_meta( user_id, prefix.'capabilities', 
 
}
}
}
}

或者使用下面的代码,也行。

add_action( 'user_register', 'dup_capabilities' );
add_action('profile_update', 'dup_capabilities');
function dup_capabilities( $user_id ){
//在这里设置数据表前缀,不分主站子站,全部写上即可。
$prefixs = array('a_','b_','c_');
global $table_prefix;
cap_val = get_user_meta( user_id, 
if( !empty( $cap_val ) ) {
foreach( prefixs as prefix ){
if( prefix != table_prefix )
update_user_meta( user_id, prefix.'capabilities', 
}
}
}

上面的代码仅能自动为以后的用户设置权限,并不能给以前的用户设置权限,所以如果需要为以前的用户设置权限,你需要获取所有用户id,然后循环执行上面插入权限的MySQL。

如果你的用户注册数据中还有别的字段,那么你可能需要参考上面的代码,将数据写入其中。

注意:本文实现的wordpress共享用户数据,仅能共享注册登录,不能实现自动登录。比如如果在A站点登录用户A,当你切换到B站点时,并不会自动为你登录A用户,当然你可以手动登录。出现这种问题的原因是,A、B两个站的域名不同,cookies不能实现跨域。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 14.04上使用双因素身份验证保护您的WordPress帐户登录

    安全性是运行WordPress网站最重要的方面之一。我们中的许多人都倾向于认为黑客不会打扰我们的网站,但实际上,未经授权的登录尝试是在公共互联网上运行服务器的常...

    彼岸轮回
  • 多个wordpress共享同一用户数据库

    上次不是发了一个Typecho站点共享同一用户数据库嘛,然后我就在想wordpress是不是也可以实现多个wordpress共享同一用户数据库试了试还真的可以实...

    回忆大大
  • Siteground注册购买图文教程

    Siteground是美国有名的主机商家,经过魏艾斯博客和朋友们几个月的使用,感觉Siteground在稳定性、速度、操作上比较的方便易用,所以写下本文把这个好...

    魏艾斯博客www.vpsss.net
  • 使用宝塔面板快速搭建WordPress博客

    随着运维思想的改变和技术的发展进步,越来越多朋友选择了面板套件去管理服务器,使用管理面板工具可以简化许多复杂的程序部署过程,今天给大家分享如何使用宝塔面板快速搭...

    Z4
  • 如何在Ubuntu 14.04上使用Fail2Ban保护WordPress

    WordPress是一个非常强大的内容管理系统(CMS),是免费和开源的。因为任何人都可以发表评论,创建一个帐户,并在WordPress上发帖,许多恶意行为者已...

    林岑影
  • WordPress网站忘记密码怎么办

    很多人在第一次登陆网站之后,都喜欢用自动登陆功能,结果时间久了,自己都把网站后台的密码忘记了。当然,也有的是网站被黑了,密码直接被对方给改了。无论哪种情况,最后...

    云点SEO
  • 腾讯云使用安装宝塔面板小白视频教程

    本期的建网站视频教程 给大家分享的是宝塔面板小白安装教程。教程分为三个板块:1、安装前的准备工作。2、安装宝塔面板。3、宝塔面板安装WordPress网站。

    奶爸建站笔记
  • 【玩转 WordPress】视频征稿活动

    艾薇巴蒂!社区的活动一波又一波!就在前几天【玩转腾讯云】之视频征稿活动 已经截稿进入到后期评审了,相信还有很多作者没有来得及上车,这不【玩转】系列再次发车!——...

    云加社区
  • 使用lamp搭建个人博客

    购买一台网络云服务器,可以考虑阿里云、腾讯云、百度云等,这里以阿里云服务器举例。 共享型价格在半年170元左右。不定期会有活动,首台半价等。 系统配置Ubu...

    可定
  • wordpress安全插件iThemes Security使用经验分享

    wordpress安全插件iThemes Security,之前我用过一个 all in XX的插件功能似乎也是比较强大的,但是偶尔总是把自己也给锁定导致无法登...

    wordpress建站吧
  • 一次 WordPress 管理员账号密码泄露事件

    昨天明月经历了一件有关 WordPress 站点安全意识的奇葩事儿,很是凸显现在互联网甚至个人电脑的安全形势,今天就给大家分享一下这个经历,希望可以提高大家对站...

    明月云服务
  • LAMP平台基于NFS实现web服务器负载均衡

    前言 随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解...

    小小科
  • 如何轻松自定义WordPress登录页面

    Ø版本的WordPress的多年发展中,默认的登录屏幕设计没有改变,仍然是简单和干净是在不同屏幕尺寸的作品。但是,在为特定客户(特别是公司)构建网站时,如果您可...

    许都博客
  • WordPress 面对恶意请求、恶意登录的基本安全防御措施

    今天明月给大家分享一下 WordPress 站点的基本安全防御措施,这些都是明月多年使用 WordPress 的经验总结,至少都是“实测有效”的,甚至不少还是明...

    明月云服务
  • 『图文教程』腾讯云服务器搭建 WordPress站点

    WordPress 是一款常用的搭建个人博客网站软件,该软件使用 PHP 语言开发。您可通过在腾讯云服务器的简单操作部署 WordPress,发布个人博客。

    用户6628475
  • 5分钟玩转Lighthouse|零基础也能拥有WordPress个人博客

    【5分钟玩转Lighthouse】系列文章将为大家分享轻量应用服务器使用教程,提供丰富的实践指南,帮助大家快速上手并获得最佳产品体验。本期主要介绍如何借力 L...

    腾讯云计算产品团队
  • 如何使用XAMPP搭建本地环境的WordPress网站

    您是否使用XAMPP在计算机上搭建建本地环境WordPress网站?在电脑上搭建本地环境的WordPress可帮助您试用WordPress,测试主题和插件以及学...

    晓得博客
  • 我的Serverless实战—基于Serverless搭建WordPress个人博客图文教程

    serverless中的server是服务器的意思,less是没有的意思,顾名思义也就是无服务器

    乌龟哥哥
  • 带妹玩转vulnhub(一)

    题目是不想在刷了,想学一学渗透测试的知识。 由于是开头之作,所以会写的比较的详细,尽量让大家少走弯路。

    用户5878089

扫码关注云+社区

领取腾讯云代金券