如何在多个WordPress网站之间共享用户和登录

您是否希望在两个或更多WordPress网站之间共享用户和登录会话?如果是这样,您可以按照本指南逐步学习如何操作。

最近,我发现自己处于一种情况,我需要在一个网站上添加一个bbPressBuddyPress “部分”(我们将这个网站称为B),虽然主网站(网站A)和网站B应该有不同的WordPress安装。幸运的是,这两个网站都托管在同一台服务器上,因此这使得整个场景变得更加容易。

在我完成并完成它之后,我决定写一篇文章来防止你在做这个时遇到的一些麻烦。此外,该过程可以扩展到您需要的任意数量的网站。就我而言,我只需要在两个WordPress安装之间同步登录详细信息和cookie。

要求/场景

  • 站点A和站点B必须位于同一顶级域(子文件夹或子域)
  • 站点A和站点B将使用相同的数据库

可能很明显,但您还需要FTP访问这两个网站,我们将为两个网站打开和编辑wp-config.php。如果您符合要求,我们可以继续前进。

(可选)获取完整的网站备份

由于我们将使用wp-config.php和数据库,因此最好是安全并运行完整的网站备份,或者至少是数据库和wp-config.php。为此,我建议使用Updraft PlusWP Time Capsule,但几乎任何其他解决方案都可以使用。我推荐它们是因为我多次使用过它们并且从未让我失望过。

共享用户和用户元

为了在两个网站上拥有相同的登录名和密码,我们将使用相同的数据库表。如果您使用的是默认前缀,则应将这些名称称为wp_userswp_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上给自己管理员角色。

全部评论 (2条评论)

发表评论

正在加载验证码......

请先完成验证

  • CharlesDwell

    大家好! 有人在家吗?

    |
  • px

    orz,博主你是酷比魔方的吗,https访问酷比魔方结果跳到这里来了

    |