2个WordPress站点,有2个数据库,但共享相同的用户

时间:2017-03-15 作者:Tidjy

我有两个Wordpress安装:siteA和siteB。每个安装都有自己的wordpress数据库:针对siteA的databaseA和针对siteB的databaseB。

我想要的是siteA上的用户可以连接siteB。我无法使用CUSTOM\\u USER\\u表,因为它有两个独立的数据库。但是,数据库托管在同一台服务器上。那么,如何在配置中使用siteA for siteB的users表呢?

6 个回复
SO网友:PayteR

在Wordpress中,不可能在两个独立数据库上的两个独立安装之间共享用户。

只需硬编码即可:

硬代码WP\\u User类连接到其他数据库并从中检索用户函数,对于WP\\u usermeta表,该函数连接到其他数据库并从中检索用户,但当然不建议使用上述解决方案,因为它不可更新。

SO网友:neoshed

您可以通过在site BOn site A的wp\\u配置文件中进行更改来实现这一点,假设它使用了“wp\\u 1\\u”table\\u前缀。对于站点B,您需要将前缀从$table\\u prefix=\'wp\\u 1\\u\';

收件人:

$table\\u前缀=\'wp\\u 2\\u\';

在站点B的配置文件中添加以下代码:

定义(\'CUSTOM\\u USER\\u TABLE\',\'wp\\u 1\\u users\');

定义(\'CUSTOM\\u USER\\u META\\u TABLE\',\'wp\\u 1\\u usermeta\');

同时将站点A的wp config文件中的salt密钥替换为站点B

SO网友:bueltge

在中通过WPRSS导入/导出合并数据库内容Multisite installation, 一次安装、一次维护和一个默认选项,用于共享两个站点的用户信息。因此,您不需要第三方插件,在一次安装中使用具有不同域的不同站点。

好处

  • 维护、一次性升级
  • 共享插件、主题
  • 共享用户
  • 快速访问多个博客
  • 高级设置
  • 标准,无第三方插件,必要的更改

SO网友:iBug

这对我来说确实有效,但首先是警告和免责声明:Do this at your own risk.

这很简单。“只是”;“共享”;使用视图的数据库之间的相关表。我使用的是MySQL/MariaDB,所以如果您使用的是不同的DBMS,那么应该修改这些语句。

USE siteB;
ALTER TABLE wp_users RENAME TO wp_users_bak;
ALTER TABLE wp_usermeta RENAME TO wp_usermeta_bak;
CREATE VIEW wp_users AS SELECT * FROM siteA.wp_users;
CREATE VIEW wp_usermeta AS SELECT * FROM siteA.wp_usermeta;
请记住,您必须使用同一组与用户相关的插件,否则很快就会遇到问题。

SO网友:John

我也在考虑这样做。因此,与其拥有两个不同的数据库,不如只拥有一个。我知道表格前缀可以不同。如wp\\U 12和;wp\\U 21但我想你需要两种盐在两个网站上都是一样的?

我认为他们的问题是,它有两个独立的数据库。因此,他们最好创建一个新的数据库,然后导出另外两个数据库并将其导入新数据库。但前提是每个站点的表前缀不同。

SO网友:froger.me

是的,这是可能的,尽管有上述答案。如果你想让网站完全分开,你可以WP Remote Users Sync (免责声明:我是插件的作者)

编辑-详细说明评论中所问的上下文和使用的方法:

它的工作方式是,每当用户数据发生更改(登录、注销、创建、更新、删除、角色、密码、元数据、使用WordPress挂钩和重新定义可插入功能)时,都会调用所有已注册的远程站点(使用<script> 用于登录和注销的标记,以便共享Cookie,以及wp_remote_post 在所有其他情况下)使用特定端点(my-website.com/wprus/[action_name]). 然后,在远程站点上,监听和捕获呼叫,解析数据,并同步用户。

该插件与现有插件不同的是安全层:通信使用一次性初始化向量、hmac签名、令牌验证和IP验证进行加密,以使流程尽可能安全。

促使我实施它的原因是,要么解决方案不存在,要么甚至商业解决方案也不合适(最受欢迎和最大的冒犯者是Share Logins Across Multiple Sites 每年高达250美元,但在许多方面都很脆弱,其中最糟糕的是iframe注入,但有关这方面的更多信息值得发表)。

使用单独的域、数据库和服务器(更重要的是使用安全令牌交换)同步网站也意味着,对于每个连接的远程站点(远程调用),与用户相关的每个操作都会不可避免地产生边际性能开销。

相关推荐

使WordPress在USERS屏幕上显示wp_USERS表时,将默认用户元与另一个表中的列联接

我正在创建一个插件,将自定义的可排序列(声誉分数)添加到admin page>users中显示的users表中,问题是该列的数据应该从MySQL表wp\\U user\\U Reputation中提取(userid,user_reputation_score) [为我们自己的目的而创建]。我的评估是,我需要在查询中显示该列,以便为其添加排序功能。如何使make WordPress以wp\\u user\\u信誉加入wp\\u users表。我感谢你的帮助。