在上一个教程中小编实现了 WordPress 的多个站点站点的用户数据共享,但是用户在登录站点 1 后继续访问站点 2 时仍需要重新登录,这样对于用户体验的非常不好的,但是目前没有什么很好的解决方法,不过之前小编在 《WordPress 二次开发教程手记:多站点的用户数据共享》 一文中解决了多个 WordPress 站点之间用户数据的互通共享问题,但是小编发现如果用户在登录站点 1 后继续访问站点 2,任然需要重新登录。这样对于用户体验是非常不友好的,但是目前没有很完美的解决办法。接下来小编就发一个不是很完美的代替方案,利用 wpmu 中的 cookie 共享方案来解决这个问题。

首先说下这种方法适用的在什么情况下使用:

次级域名之间的通行登陆,例如 1.weixiaoduo.com 和 2.weixiaoduo.com 之间通行登陆

同一个域名下不同目录之间互相登陆,例如 weixiaoduo.com 和 weixiaoduo.com/site 以及 weixiaoduo.com/site1 之间通行登陆,而且 cookie 也不能跨浏览器。

操作步骤:

1 、打开主站的 wp-config.php,找到类似于以下代码的代码。

define('AUTH_KEY',         'E1hds(d)Pi#}15vM+:Vb2)+NO.2Z$V5t<ASxd]w1>T<xPe[<43*[5ekSGlnQ1<7l');
define('SECURE_AUTH_KEY',  '!R012(b1 *St4pMeicGuVm?<kuR7wO(X+|HSB.IbVlh[Sw`mDp{UW^,3cIpyi-jD');
define('LOGGED_IN_KEY',    '3|>)1#o>*y9UyTz3nG.]qg5*^}|wx1B)_1>])H+{Ofl[^a1l#~*;JYc<]0@#Zq1@');
define('NONCE_KEY',        '+|taP{aNL[-d,{-/vo&iC ++hO;zZcf|M48*Ju|#u8<,4TC*F&:uWdPHFqdzm()w');
define('AUTH_SALT',        ':-O^|#w&t_D)/w<bUwT_tk@S]D;ggDixOw<=I X+lTl]_@b~W## ;$D~xp^a=ka&');
define('SECURE_AUTH_SALT', 'IN]e6b@]pG2wyj[S)+pq5g3[%.+B^)L-{(n*866I&b-NWI2:Ey #+<+f~nyd-| &');
define('LOGGED_IN_SALT',   'O]6:#9@kn)./^ssR,42l4%8|M-Q($R=b~lY@EAj3?gcrPzj(@or4aSvV!CYq?hLI');
define('NONCE_SALT',       '7#4-+^_t|XO}kQc_X1t~)no3W!kG5rlbOt-*rj)]8?=c*;i1#=Nb$sBxcd]fve+L');

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');

(PS:以上代码不要直接复制本站给出的代码,你可以到 https://api.WordPress.org/secret-key/1.1/salt/去生成一个。)

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', 'weixiaoduo.com'); //将 weixiaoduo.com 换成你网站的根域名, 必须是根域名!

至此就完成了。