让用户在多个WordPress网站之间通行登录
继续读之前请了解以下事实:
这是一个wpmu的替代方案,并不是整合不同域名之间的wp网站,所有有一些限制。
1. 出于安全问题,cookie不能在多域名之间共享,如果你追求的是www.youdomain.com和www.anotherdomain.com之间通行登陆,以下的方法不适用。也许你应该尝试自动登录
2. cookie也不会在多浏览器之间共享,以下的方法只能实现在同一个浏览器中通行登陆。
3. 支持的类型:
次级域名之间的通行登陆,例如sub1.yourdomain.com和sub2.yourdomain.com之间通行登陆
同一个域名下不同目录之间互相登陆,例如www.yourdomain.com和www.yourdomain.com/site以及www.yourdomain.com/site1之间通行登陆。
go ahead…
既然主站和英文站共享了用户数据,那么用户从任何一个网站登录,都应该自动登入另一个网站,可以在两个网站之间任意切换。这就涉及到整合wordpress cookie的问题。
测试环境:
WordPress版本: 3.3.1
主站:http://dev.solagirl.net (假设)
英文站:http://dev.solagirl.net/en (假设)
实现步骤:
1. 打开主站的wp-config.php,找到如下代码, 如果宏定义的值不是随机字符串,点击这里生成。
define( 'AUTH_KEY', '#_)xJ7@a}p4DU6/R/jscfnhliSo_t;HLg(U67U$:=cUNDg|@)wixS%PyrPYWP9Ul' ); define( 'SECURE_AUTH_KEY', ')rNVnJPQEudPd&T$IL*u/X$WJR?UU~Sx3>:YgR/%L !PA$=/f>dOJHon$`NSk]V,' ); define( 'LOGGED_IN_KEY', '>3*$!DC+:RL|GK$}$WsI6-|7/#DBD:GCA~;(}!:<U|-w%ha&zMhVS!|vQ~9jbeO?' ); define( 'NONCE_KEY', '~baB:U4,+JQ&$7{KW 7~n):cq,`=U3)1$XJ7eOazEX/eI:;IvlniiZ/SUx~XU.8|' ); define( 'AUTH_SALT', 'tXIMJ@|38y> gz{vo*/Gqh92!S:AbViJ.}nji6F7IcMkaV}4wiUVR^paedGyhACv' ); define( 'SECURE_AUTH_SALT', '72M&q1b{Cx)mO&84#wuo6jQ2n h,U/#x?iBEK]Csnj>,a9M p-n}-##u2BpIx66j' ); define( 'LOGGED_IN_SALT', 'M6FGa}jYJ[hhwga}2Q)2;[9U#GJ=T%)bg_#Wm!/@6M,xC(CJrHW n/Uf.[rkjk=-' ); define( 'NONCE_SALT', '#toJzRPrV:Rq~8e4]O?vK@K~wLK9F>F&{Z^S0/Q~BGK8y:A`CzY7OK3A41OJ,L4m' );
2. 拷贝主站wp-config.php中的AUTH_KEY和SECURE_AUTH_KEY到英文站的wp-config.php中,替换相应的行。如果嫌麻烦上面代码全部拷贝到英文站也可以。
3. 在主站和英文站的wp-config.php中创建下面代码,记得去生成一个复杂的随机字符串,不要直接拷贝,主站和英文站的SECRET_SALT值要相同
define('SECRET_SALT', 'Q$QuHIfQO^(CtrL5D(fcG$miB,fE2]-~::qoB,O_?o|TfgNfQB/x/kv$Tg1Aa7Hf');
4. 在主站和英文站的wp-config.php中创建如下代码
define('ADMIN_COOKIE_PATH', '/'); define('COOKIEPATH', '/'); define('SITECOOKIEPATH', '/'); define('COOKIEHASH', md5('用自己的随机字符串替换'));
5. 清除浏览器的cookie,选择其中一个网站登录,然后直接访问另一个网站的wp-admin,看是不是已经自动登陆了。
不同次级域名之间的通行登陆
在所有网站的wp-config.php中再加上
define('COOKIE_DOMAIN', 'seoccc.com');
不要加www