同一个用户登录多个wordpress站点

在一个服务器上,安装多个wordpress网站。例如:A网站为主站,域名是 example.com

B网站是子站,域名是b.example.com

首先域名解析的时候,b.example.com是A记录,同A网站一样需要指向同一个服务器ip。

nginx的配置里就是

server{
root /var/www/html/siteA;
}
server{
root /var/www/html/siteB;
}

其余部分都一样。

首先安装siteA。

然后安装siteB,打开 wp-config.php,将其中

$table_prefix = ‘wp_’;

改为其他的表头,在这里我改成了

$table_prefix = ‘wpB_’;

然后就可以正常安装siteB。

 

安装完成之后,可以用siteB的管理员账号登录一下,记得用完之后要退出登录。接下来,我们来打通A、B两站的用户数据。

 

在siteB的目录下,wp-config.php 文件中,在

 /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

这句话之前,插入

define( ‘CUSTOM_USER_TABLE’, ‘wp_users’ );
define( ‘CUSTOM_USER_META_TABLE’, ‘wp_usermeta’ );

这时A站的用户都可以登录B站。但安装B站时的管理员用户已经无法登录B站。

用A站的管理员用户名登录B站时,会发生没有权限访问后台的问题。这时需要在wp_usermata这张表里改管理员用户的一些信息。

首先要确定A站管理员用户的UID,例如我的管理员用户UID是6.

那么在mysql数据库中,选中wordpress的数据库。这里假设wordpress数据库名字就是wordpress,

数据库B的表头是wpB_。

use wordpress;
INSERT INTO wp_usermeta(user_id,meta_key,meta_value) VALUES(6, ‘wpB_capabilities’, ‘a:1:{s:13:”administrator”;s:1:”1″;}’);
INSERT INTO wp_usermeta(user_id,meta_key,meta_value) VALUES(6, ‘user_level’, 10);

 

如果发现安装的不好,需要删除重新安装,怎么删除所有B站的表呢?用下面这条mysql语句可以生成所有的要删除的table,然后将生成的命令复制到终端中,就可以删除了。

SELECT CONCAT(‘drop table ‘,table_name,’;’) FROM information_schema.tables where information_schema.tables.TABLE_NAME LIKE ‘wpB_%’ ;

Advertisements

同一个用户登录多个wordpress站点》上有1条评论

  1. Pingback引用通告: 让用户在多个WordPress网站之间通行登录 | 宇宙海洋™

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s