有朋友在问wordpress是不是可以实现多个wordpress共享同一用户数据库。
思路
1.两个wordpress站共享用户数据,其他(文章、主题、设置等)数据不共享。
2.共享cookie,即登录A站后切换为B站后仍为登录状态。
教程
前提:A、B两站为同顶级域名(a.abc.com与b.abc.com)或同根目录(abc.com/a与abc.com/b)
A为主站,B共享A的用户数据,新建B,安装时数据库选择和A同一数据库下,A的数据库表头为wp_,B的改为和A的不一样,如:wp2_,安装B站时管理员任意填写,反正用不到(B站的管理员账户从A站)。
打开B站的wp-config.php文件,添加:
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
这时候,用A的用户数据去登录B,可以登录但无后台权限。
然后在A的functions.php添加:
add_action( 'user_register', 'dup_capabilities' );
add_action('profile_update', 'dup_capabilities');
function dup_capabilities( $user_id ){
//在这里设置数据表前缀,所有站的数据库表前缀全部写上即可。
$prefixs = array('wp_','wp2_');
global $table_prefix;
$cap_val = get_user_meta( $user_id, $table_prefix.'capabilities',true);
if( !empty( $cap_val ) ) {
foreach( $prefixs as $prefix ){
if( $prefix != $table_prefix )
update_user_meta( $user_id, $prefix.'capabilities', $cap_val );
}
}
}
然后回头管理员身份登录A站,后台用户编辑功能里把每个用户重新编辑一下,不修改任何信息即可。编辑过后,就可以用A站的账户登录B站了。
所以如果要做类似数据共享的站,最好是在一开始主站用户数量很少的时候就开始操作,不然一个个用户编辑下去也很麻烦。
A作为主站,操作用户数据或注册新用户就在A站上操作,然后同步给B。
(以下没测试,请自行测试:
如果在B站上注册新用户是否能同步给A,可以在B的functions.php里也添加以上代码)
这时候A站B站不同cookie,无法免登陆自由切换,接下来实现同步cookie。
打开A站的wp-config.php文件,复制身份认证密钥,共8行。
![图片[1]-【WordPress教程】多个wordpress共享同一用户数据库-快达源码网](/wp-content/uploads/2025/08/20231229222440270-1703859880-110c36bec9a03e78a02d7f3e66ecbcc7-1.png.webp)
把B站的身份认证密钥替换为A的,保证A、B一模一样。
在A、B两站的wp-config.php文件里同时添加:
define('COOKIEPATH', '/');
define('COOKIE_DOMAIN', '这里填写A、B两站的顶级域名');
define('SECRET_SALT', '这里任意自定义一串字符串或密码');
define('ADMIN_COOKIE_PATH', '/');
define('SITECOOKIEPATH', '/');
define('COOKIEHASH', md5('这里任意自定义一串字符串或密码'));
友情提示
本站仅提供代码研究与学习交流,请在下载后24小时内删除,以避免任何潜在的法律风险。本站所提及的“运营”、“线上”等术语,仅代表代码完整度,严禁将本代码用于任何商业运营或对外开放。本站内容来源于互联网,仅供参考和学习使用,并非本站原创,版权归原作者所有。用户在使用本站内容时,必须遵守相关法律法规,任何未经授权的使用行为,均可能侵犯他人版权,用户应自行承担由此产生的所有法律责任。本站不对因使用本站内容而引起的任何直接或间接损失承担责任。