您是否希望在两个或更多WordPress网站之间共享用户和登录会话?如果是这样,您可以按照本指南逐步学习如何操作。
最近,我发现自己处于一种情况,我需要在一个网站上添加一个bbPress和BuddyPress “部分”(我们将这个网站称为B),虽然主网站(网站A)和网站B应该有不同的WordPress安装。幸运的是,这两个网站都托管在同一台服务器上,因此这使得整个场景变得更加容易。
在我完成并完成它之后,我决定写一篇文章来防止你在做这个时遇到的一些麻烦。此外,该过程可以扩展到您需要的任意数量的网站。就我而言,我只需要在两个WordPress安装之间同步登录详细信息和cookie。
要求/场景
- 站点A和站点B必须位于同一顶级域(子文件夹或子域)
- 站点A和站点B将使用相同的数据库
可能很明显,但您还需要FTP访问这两个网站,我们将为两个网站打开和编辑wp-config.php。如果您符合要求,我们可以继续前进。
(可选)获取完整的网站备份
由于我们将使用wp-config.php和数据库,因此最好是安全并运行完整的网站备份,或者至少是数据库和wp-config.php。为此,我建议使用Updraft Plus或WP Time Capsule,但几乎任何其他解决方案都可以使用。我推荐它们是因为我多次使用过它们并且从未让我失望过。
共享用户和用户元
为了在两个网站上拥有相同的登录名和密码,我们将使用相同的数据库表。如果您使用的是默认前缀,则应将这些名称称为wp_users和wp_usermeta。
1.检查站点A的表前缀
如果您不确定您的站点的表前缀,请打开 站点A的wp-config.php并查找以下行:
$table_prefix = 'wp_';
在大多数情况下,它将是wp_,但如果你的不同只是记住它,因为我们也将它用于 站点B的wp-config.php。保持wp-config.php打开,稍后我们将需要更多信息,以及编辑它。
2.为站点B安装WordPress
请记住,我们将使用与站点A相同的数据库,因此您必须为站点B使用不同的表前缀。在我的示例中,我决定使用 com_,简称社区。你可以使用你看到的任何东西,这没关系。
如果您使用的工具用于自动WordPress安装,不允许您选择数据库和前缀,请不要担心它,因为您可以稍后从wp-config更改它们。只需确保在子文件夹或 子域中安装了WordPress 。
打开 站点B的wp-config.php,并将数据库名称,用户和密码替换为 站点A。
define('DB_NAME', 'siteAdatabase');
define('DB_USER', 'siteAuser');
define('DB_PASSWORD', 'siteApassword');
现在两个站点都将使用相同的数据库。确保 站点B使用不同的表前缀。
$table_prefix = 'com_';
3.在网站之间共享WordPress用户
要做到这一点,我们需要做的是确保 站点B使用相同的表的用户和usermeta作为 站点A.打开 站点B的WP-config.php文件和右侧前添加以下行
define( 'CUSTOM_USER_TABLE', 'wp_users' );
define( 'CUSTOM_USER_META_TABLE', 'wp_usermeta' );
/* That's all, stop editing! Happy blogging. */
请注意,wp_是 站点A的表前缀。如果您的不同,则需要更新这些行。
干得好,这两个网站现在共享相同的用户(如果你做的一切都正确)。
共享登录Cookie
既然两个网站都使用相同的登录详细信息,您会注意到如果您切换网站,则必须再次登录。这可以通过共享登录cookie来解决,这是如何做到的。
1.编辑站点A的wp-config.php
就在之前 /* That’s all, stop editing! Happy blogging. */,添加以下行:
define( 'COOKIE_DOMAIN', 'yourwebsite.com' );
define( 'COOKIEHASH', md5( 'https://yourwebsite.com' ) ); /* That's all, stop editing! Happy blogging. */
在第一行中,您必须将yourwebsite.com替换为您的实际域。在第二行,您必须放置您的WordPress站点地址(URL),您可以从仪表板 – >设置 – >常规
不要关闭 站点A的wp-config.php,我们仍然需要站点B的一些信息 。
2.编辑站点B的wp-config.php
与我们对数据库名称,用户和密码的处理方式类似,我们现在将从站点A复制以下行 并替换 站点B中存在的行:
define('AUTH_KEY', 'stringof40characters');
define('SECURE_AUTH_KEY', 'stringof40characters');
define('LOGGED_IN_KEY', 'stringof40characters');
define('NONCE_KEY', 'stringof40characters');
define('AUTH_SALT', 'stringof40characters');
define('SECURE_AUTH_SALT', 'stringof40characters');
define('LOGGED_IN_SALT', 'stringof40characters');
define('NONCE_SALT', 'stringof40characters');
显然,你实际上找不到名称stringof40characters中的任何内容 ,而是一些40个字符的随机字符串。
接下来,我们需要确保 站点B与站点A共享登录cookie 。
与上一步类似,我们现在将编辑 站点B的wp-config.php并添加我们为站点A添加的相同行 。
define( 'COOKIE_DOMAIN', 'yourwebsite.com' );
define( 'COOKIEHASH', md5( 'https://yourwebsite.com' ) );
/* That's all, stop editing! Happy blogging. */
获取您站点B的管理员权限
完成上述步骤后,您会注意到您的网站确实正在同步登录会话,但您不能访问管理仪表板。
您将收到此错误消息: 对不起,您无权访问此页面。
要获得对它的访问权限,我们需要手动编辑 wp_usermeta数据库表。有很多选项可以做到这一点,大多数人都会在你的服务器上安装phpMyAdmin。就个人而言,我正在使用Adminer (又名phpMinAdmin),因为我很少编辑数据库而且我不需要永久安装它。
接下来,打开数据库并转到wp_usermeta表。如果您也使用Adminer,则必须单击 选择数据 以查找 wp_capabilities meta_key。

从admin用户的wp_capabilities复制 meta_value,创建一个New项 并设置:
- umeta_id (留空,会自动递增)
- user_id:1(对于大多数人来说,这将是站点A上管理员的user_id)
- meta_key:com_capabilities(com_ 是站点B的前缀。将其替换为您的前缀)
- meta_value:复制 – 从wp_capabilities中为user_id = 1粘贴相同的meta_value
完成后,它应该是这样的。
现在你已经完成了,你的网站是共享用户,登录,你也在网站B上给自己管理员角色。
大家好! 有人在家吗?
orz,博主你是酷比魔方的吗,https访问酷比魔方结果跳到这里来了