在上一個教程中小編實現了 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 換成你網站的根域名, 必須是根域名!
至此就完成了。