两套 WordPres 网站用户互通 4 种方案

两套 WordPres 网站用户互通 4 种方案

现状:两个独立 WordPress 安装(两套程序,两套数据库),目标:同一账号密码,可在两个网站登录。 关键区分: ✅ 同根域名(a.shturl./shturl.cc):可以做到一次登录,两边自动已登录(Cookie 共享) ❌ 完全不同域名(shturl. / yyy.com):浏览器安全策略不能共享 Cookie,只能做到账号密码相同,跳转 SSO 登录,不能打开第二个网站就自动登录

方案 1:改成 WP 多站点 Multisite【最推荐,同根域名首选】

本质:一套 WP 程序,一套数据库,多个子站,天然共用一套用户表 wp_users/wp_usermeta

  • 优点:原生官方方案,用户完全打通;注册一次,网络管理员把用户添加到子站即可;密码统一修改。
  • 缺点:
    1. 需要合并成一套 WP 源码,原来两套独立网站要迁移,操作有门槛;
    2. 主题 / 插件是全网统一安装,子站只能启用,不能单独上传;
    3. 子站只能是子域名 a.shturl.、子目录 shturl./site2;绑定完全不同独立域名可以做域名映射,但跨域 Cookie 自动登录失效。

适合:两个站点同属一个主域名,你可以接受合并成一套 WP。

方案 2:独立两套 WP,共用 users/usermeta 数据表(数据库共享表)【同根域名】

两个 WP 程序分开,各自独立数据库表,只共用用户两张核心表:wp_users、wp_usermeta

⚠️操作前完整备份两个数据库!

配置步骤

  1. 两个网站放在同一个数据库,各自不同表前缀:
    • 网站 A:前缀a_,正常表 a_posts、a_options;用户表 wp_users、wp_usermeta
    • 网站 B:前缀b_,文章表b_posts;强制指向 A 站的用户表
  2. 在B 站 wp-config.php增加定义,指向 A 站的用户表:
define( 'CUSTOM_USER_TABLE', 'a_users' );
define( 'CUSTOM_USER_META_TABLE', 'a_usermeta' );
  1. 两个网站 wp-config 里面,必须完全一样的 AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY、NONCE_KEY、AUTH_SALT、SECURE_AUTH_SALT、LOGGED_IN_SALT、NONCE_SALT(密钥不一致,登录验证失败)
  2. 同根域名才加 Cookie 配置(两个站点都添加):
define( 'COOKIE_DOMAIN', '.shturl.' );
define( 'COOKIEPATH', '/' );

shturl. 换成你的根域名,前面带.代表所有子域名共享 CookieWordPress….

风险(重点)

  • 两个网站的用户角色是独立:用户账号存在,但不会自动拥有 B 站权限,需要代码 / 插件自动添加用户到第二个站点;
  • 数据库一旦损坏,两个站点用户同时挂掉;
  • 不同顶级域名不能 Cookie 共享,只能账号密码相同,不能自动登录。

方案 3:插件双向同步用户【最简单,不同域名首选】

不改动数据库结构,两个站点保持完全独立,新增 / 修改用户时,API 自动同步到另一个站 推荐插件:WP Remote Users Sync(免费版可用)

  1. A、B 网站都安装这个插件
  2. A 站生成 API 密钥,填到 B 站;B 站生成密钥填到 A 站,双向授权
  3. 开启同步:新建用户、修改密码、修改资料、删除用户自动双向同步

✅优点:

  • 最简单,不用改 wp-config,不用合并数据库;
  • 完全不同域名也能用;两个网站完全隔离,一个网站故障不影响另一个; ❌缺点:
  • 只是数据同步,不会自动登录。用户登录 A 站,打开 B 站还是需要点登录(SSO 跳转登录可以搭配高级版);
  • 同步会有延迟,并发高时可能数据不一致。

方案 4:SSO 单点登录(不同独立域名,想要一键跳转登录)

主站作为账号中心(IDP 身份提供商),副站作为客户端。用户访问 B 站没登录,自动跳转到 A 站登录,登录成功后自动返回 B 站并登录。 插件:miniOrange OAuth / SAML SSO ✅优点:跨完全不同域名,统一账号,跳转登录体验好; ❌缺点:免费版有限制,完整功能大多需要付费;配置复杂。