在两个安装之间共享用户和WooCommerce成员资格

时间:2020-03-07 作者:sw123456

我有一个会员网站(我们称之为mainsite.com),使用woocommerce会员身份来保护某些页面。

我希望创建第二个wordpress站点(sub.mainsite.com),它使用与主站点相同的wp用户表,以便注册/登录主站点。com还将其注册/登录到sub.mainsite。com。

根据本文,这是相当直接的,因为两者都在同一台服务器上https://trickspanda.com/wordpress-share-users-login/

然而,我希望第二个网站也有woocommerce会员资格,以保护某些页面。

我是否可以/如何设置第二个站点,以便此站点安装的成员资格插件读取主站点的wc\\U成员资格表(并且不创建自己的表),从而允许在两个站点之间同步成员资格?

1 个回复
最合适的回答,由SO网友:Toffee 整理而成

woocommerce成员资格插件使用post表存储其数据,但该插件中的几乎所有查询都将包含wc_membership 在其中(他们在所有post\\u类型中都使用它,但它可能无法捕获所有meta\\u查询,需要测试,查看是否发生任何错误或丢失的数据,在不包含wc\\u成员身份的查询中找到插件使用的所有meta键,并将其添加到strpo)

因此,没有关联的表和清晰的数据分隔,您可以使用它们将其正确加载到子域中。

但是,您可以使用查询过滤器替换前缀来查找正确的表,您需要确保子网站上的前缀确实是唯一的,并且足够长,这样它就不会干扰查询的其余部分(例如:2VXOJU8Nxo\\uuxo)

然后在您的子网站上安装,您将添加此过滤器

add_filter(\'query\', function($query) {
  global $wpdb;

  if (strpos($query, \'wc_membership\') !== false) {
     $query = str_replace($wpdb->prefix, \'main_website_prefix\', $query);
  }
  return $query;
});
免责声明:这不是一个非常安全的解决方案,但几乎是您提议的配置中唯一可能的解决方案

另一个更安全的解决方案是,不要为子域使用另一个wordpress实例,而是使用同一个实例

并制作或找到一个插件,以便能够对您的内容进行分类,并在正确的网站上显示正确的内容

就像多站点安装一样(memberships插件不支持多站点)

您还可以询问插件的创建者是否愿意为其插件添加多站点支持,以便多站点安装可以共享相同的成员身份,这将解决您的问题

相关推荐

Wordpress database connection

我的网站被黑了,我已经把所有东西都加载了,但是页面、帖子、图片等都没有显示在网站上。我注意到在我的数据库ameqt\\u wp507中有一个列表,上面写着wp\\u 507posts等,还有一个列表写着wp6t\\u posts等。其中包含wp6t的一个包含了所有内容。我如何让它看到这些信息?ThanksSarah公司