在多个Wordpress网站上共享用户数据的最佳方法是什么?


10

首先,Multisite不是我想要的。我有5个网站都在我希望为其启用用户帐户的单独域上全部使用Wordpress。我需要在整个网络上共享用户数据,并且当用户创建帐户时,他们也可以立即访问所有其他网站。使用多站点时,Wordpress不推荐我尝试做的事情:

如果计划创建高度互连,共享数据或共享用户的站点,那么多站点网络可能不是最佳解决方案。- http://codex.wordpress.org/Before_You_Create_A_Network(第1款,第3句)

我尝试使用“共享用户表技巧”,如http://wordpress.org/support/topic/multiple-sites-same-users-how和此处http://xentek.net/articles/528/所述实现wordpress-shared-users-table-trick /和许多其他地方...问题是,此信息是2-7岁,我正在使用Wordpress 3.5.1,而此“ trick”没有似乎没有用。

我试图将此代码插入该$table_prefix行的wp-config中。

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

长话短说,我认为此技巧不再有效,因为我根本无法登录到管理员端的第二个站点。

关于链接此数据的最佳方式的任何建议是什么?


1
我不明白为什么CUSTOM_USER_TABLE不起作用...看看这里是否有东西:wordpress.stackexchange.com/search?
q=CUSTOM_USER_TABLE

当我使用CUSTOM_USER_TABLE时,确实会在网站之间共享用户,但是,在第二个网站上,无论如何我都无法以管理员身份登录。搜寻几个小时并找到2-7岁的插件和文章使我相信此技巧在3.5.1中不再起作用...
Ian

问题是这不是一个把戏,它是一个核心功能似乎尚未报告错误,并且[wp-hackers]列表中没有任何相关信息……
brasofilo

感谢您的意见。通过更深入地了解您在链接中看到的一些内容,我能够找到答案。我已经在下面发布了我的解决方案。再次感谢@brasofilo
伊恩

真是太好了,您几乎涵盖了如何共享用户的所有方式。但这里的情况有所不同。Ive 5 wordpress网站,每个特定的网站都有自己的数据库。当新用户在5个网站中的任何一个上注册时,我如何使用您的解决方案以某种方式连接所有单独的用户表,他可以使用一次注册立即登录到其他任何网站?我知道使用WPMU在单个数据库中完成此操作的某种方法,但是我没有真正找到在单独安装的wordpress上实现此操作的任何方法。将寻求任何帮助。谢谢

Answers:


8

好的,首先,我觉得自己是个白痴,尽管在我的辩护中,大多数谈论这一点的文章都没有提到进行这项工作时非常关键的细节。答案是您需要为数据库中的至少一位管理员设置权限。可以在以下法典中找到此信息:http : //codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

设置wp-config.php文件后,必须对主usermeta表(在我的情况下为wp_usermeta)字段wp_capabilities行和meta_value列进行更改。通过phpMyAdmin执行此操作。

注意:执行此操作,至少要有一位用户管理员登录。进入后,可以从后端调整所有其他用户/管理员角色。

哪些用户权限将被更改的屏幕截图

对于创建的每个网站,都需要为该新站点前缀分配管理员用户角色。

就我而言,由于目前我仅在2个网站上进行此操作,因此看起来像这样:

a:1:{s:13:"administrator";s:1:"1";}
tbs_capabilities = a:1:{s:13:"administrator";s:1:"1";}

wp_usermeta值的屏幕截图

第一行设置默认表前缀的权限(在本例中为wp_),第二行设置第二个网站的权限(在本例中为tbs_前缀)。

感谢brasofilo的评论,它使我更加深入,终于解决了我的问题!

我希望这个答案可以帮助其他遇到与我同样的问题的人。


从未使用过此功能,但很高兴知道有一点技巧可以使它起作用;)不错的写作+1
brasofilo

1
谢谢,这绝对应该在教程中提到!
Mircea Sandu

2

共享wp_users和wp_meta时,还有另一个问题,其他wordpress安装确实可以识别用户,但不能识别来自其​​他网站的用户的角色。该角色显示为未定义。

因此,您根据需要编辑了wp-config.php:

define('CUSTOM_USER_TABLE', 'someprefix_users');
define('CUSTOM_USER_META_TABLE', 'someprefix_usermeta');

我认为,最简单的方法是不使用db,而是使用wp内部。登录后,可以分配角色。假设我们需要所有人的贡献者角色和用户“超人”的管理员角色。

function check_user_role($user_login, $user) {
  if ( $user_login == 'superman' ) {
     $user->add_role('administrator');
     } else {
     $user->add_role('contributor');
  }
}

// the action fired on login
add_action('wp_login', 'check_user_role', 10, 2);

因此,来自初始网站的用户在登录时将获得“贡献者”角色。

  • 使用管理员用户登录后,可以删除用户检查。
  • 用户可能具有多个角色,功能很重要。

http://codex.wordpress.org/Class_Reference/WP_User


0

我必须创建一个新行:

meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'

user_id=1。您描述的方法无效。


1
在上面的答案中,“ tbs”是我安装的第二个WordPress网站的前缀。因此,与其说表格不是wp_posts,不如说是tbs_posts。除非您显式设置$ table_prefix ='tbs_'; 它不会工作。
伊恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.