两套 WordPres 网站用户互通 4 种方案
现状:两个独立 WordPress 安装(两套程序,两套数据库),目标:同一账号密码,可在两个网站登录。 关键区分: ✅ 同根域名(a.shturl./shturl.cc):可以做到一次登录,两边自动已登录(Cookie 共享) ❌ 完全不同域名(shturl. / yyy.com):浏览器安全策略不能共享 Cookie,只能做到账号密码相同,跳转 SSO 登录,不能打开第二个网站就自动登录
方案 1:改成 WP 多站点 Multisite【最推荐,同根域名首选】
本质:一套 WP 程序,一套数据库,多个子站,天然共用一套用户表 wp_users/wp_usermeta
- 优点:原生官方方案,用户完全打通;注册一次,网络管理员把用户添加到子站即可;密码统一修改。
- 缺点:
- 需要合并成一套 WP 源码,原来两套独立网站要迁移,操作有门槛;
- 主题 / 插件是全网统一安装,子站只能启用,不能单独上传;
- 子站只能是子域名 a.shturl.、子目录 shturl./site2;绑定完全不同独立域名可以做域名映射,但跨域 Cookie 自动登录失效。
适合:两个站点同属一个主域名,你可以接受合并成一套 WP。
方案 2:独立两套 WP,共用 users/usermeta 数据表(数据库共享表)【同根域名】
两个 WP 程序分开,各自独立数据库表,只共用用户两张核心表:wp_users、wp_usermeta
⚠️操作前完整备份两个数据库!
配置步骤
- 两个网站放在同一个数据库,各自不同表前缀:
- 网站 A:前缀
a_,正常表a_posts、a_options;用户表wp_users、wp_usermeta - 网站 B:前缀
b_,文章表b_posts;强制指向 A 站的用户表
- 网站 A:前缀
- 在B 站 wp-config.php增加定义,指向 A 站的用户表:
define( 'CUSTOM_USER_TABLE', 'a_users' );
define( 'CUSTOM_USER_META_TABLE', 'a_usermeta' );
- 两个网站 wp-config 里面,必须完全一样的 AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY、NONCE_KEY、AUTH_SALT、SECURE_AUTH_SALT、LOGGED_IN_SALT、NONCE_SALT(密钥不一致,登录验证失败)
- 同根域名才加 Cookie 配置(两个站点都添加):
define( 'COOKIE_DOMAIN', '.shturl.' );
define( 'COOKIEPATH', '/' );
shturl. 换成你的根域名,前面带
.代表所有子域名共享 CookieWordPress….
风险(重点)
- 两个网站的用户角色是独立:用户账号存在,但不会自动拥有 B 站权限,需要代码 / 插件自动添加用户到第二个站点;
- 数据库一旦损坏,两个站点用户同时挂掉;
- 不同顶级域名不能 Cookie 共享,只能账号密码相同,不能自动登录。
方案 3:插件双向同步用户【最简单,不同域名首选】
不改动数据库结构,两个站点保持完全独立,新增 / 修改用户时,API 自动同步到另一个站 推荐插件:WP Remote Users Sync(免费版可用)
- A、B 网站都安装这个插件
- A 站生成 API 密钥,填到 B 站;B 站生成密钥填到 A 站,双向授权
- 开启同步:新建用户、修改密码、修改资料、删除用户自动双向同步
✅优点:
- 最简单,不用改 wp-config,不用合并数据库;
- 完全不同域名也能用;两个网站完全隔离,一个网站故障不影响另一个; ❌缺点:
- 只是数据同步,不会自动登录。用户登录 A 站,打开 B 站还是需要点登录(SSO 跳转登录可以搭配高级版);
- 同步会有延迟,并发高时可能数据不一致。
方案 4:SSO 单点登录(不同独立域名,想要一键跳转登录)
主站作为账号中心(IDP 身份提供商),副站作为客户端。用户访问 B 站没登录,自动跳转到 A 站登录,登录成功后自动返回 B 站并登录。 插件:miniOrange OAuth / SAML SSO ✅优点:跨完全不同域名,统一账号,跳转登录体验好; ❌缺点:免费版有限制,完整功能大多需要付费;配置复杂。