什麼是 WordPress Multisite?
WordPress 核心內建了一個叫做「Multisite」的功能,最早可追溯到 2010 年 WordPress 3.0 發布時。自那時起,這項功能經過多次改版,不斷加入新功能並強化安全性。
簡單來說,WordPress multisite 可以這樣理解:一所大學維護單一個 WordPress 安裝,但每個學院都能擁有自己的 WordPress 網站。
WordPress Multisite 到底是什麼?
Multisite 是 WordPress 的一項功能,讓多個網站可以共用同一個 WordPress 安裝。啟用 multisite 後,原本的 WordPress 網站會轉換成支援所謂的網站網路(network of sites)。
這個網路共用檔案系統(也就是說 plugin 和佈景主題也是共用的)、資料庫、WordPress 核心檔案、wp-config.php 等等。
這表示 WordPress、佈景主題和 plugin 的更新只需要執行一次,就能套用到網路中的所有網站,因為它們共用檔案系統上的相同檔案。
這正是 multisite 的主要優勢之一,讓你可以不斷增加管理的網站數量,同時維護客戶網站所需的工作量維持不變。
子網域還是子目錄?
WordPress multisite 有兩種運作模式——當你把一般的 WordPress 安裝轉換成 multisite 安裝時,需要選擇其中一種:
子網域: 例如:site.domain.com
⋯⋯或是
子目錄: 例如:yourdomain.com/site
每種模式都有各自的優缺點,你需要在做決定時仔細考量。
不過有一點很重要:一旦做出決定,要把網路從子目錄改成子網域(或反過來)是非常困難的——尤其是當你已經建立了一些網站之後。
在做決定之前,以下是幾個需要記住的重點:
子目錄模式是設定和維護上最簡單的模式。這是因為所有網站都只是主網域下的路徑(例如 yourdomain.com/subsite)。因此,你只需要一張 SSL 憑證給主網域,就能涵蓋整個網路。
同時,由於這樣的網址結構,Google 和大多數搜尋引擎會把子目錄網路中的所有子網站視為一個大型網站。因此,你的終端客戶在子網站上新增的內容,可能會影響到你首頁網站的 SEO 表現。這種影響程度有待商榷,也有人認為這樣的安排反而對 SEO 表現有利。
子網域模式的設定稍微複雜一些,但它的網址結構(例如 subsite.yournetwork.com)通常被認為看起來「更專業」。
設定子網域模式的主要挑戰之一是整個網路的 SSL 涵蓋範圍(HTTPS)。這是因為瀏覽器會把子網域視為獨立的實體。因此,你需要為網路中的每個子網域準備不同的 SSL 憑證,或是使用一種特殊的憑證,稱為萬用字元 SSL 憑證(Wildcard SSL certificate)。近年來,主機供應商和控制面板在 SSL 配置方面不斷進步,有些甚至提供一鍵申請萬用字元憑證的功能,縮小了兩種模式在設定複雜度上的差距。
與子目錄模式不同,子網域網路中的子網站會被搜尋引擎視為獨立的網站,這表示一個子網站上的內容完全不會干擾其他子網站的 SEO 表現。
超級管理員
單站 WordPress 安裝允許你新增無限數量的使用者,並給予這些使用者不同的角色和權限。
在 WordPress Multisite 中,會解鎖一種新的使用者類型:超級管理員(super admin)——以及一個新的管理面板:網路管理面板。
顧名思義,超級管理員擁有網路上的超級權限,能夠管理所有子網站、plugin、佈景主題,一切!
當你把單站 WordPress 安裝轉換成 multisite 後,原本的單站管理員會自動升級為超級管理員。
Plugin 和佈景主題只能由超級管理員從網路管理面板安裝或移除。子網站管理員可以選擇啟用或停用這些 plugin 或佈景主題,除非超級管理員在網路層級啟用某個 plugin,這會強制該 plugin 在所有子網站上始終保持啟用狀態。
注意:如你所見,邀請某人加入你的網路並授予超級管理員身分,等於讓這個使用者完全控制你的網路。舉例來說,其他超級管理員甚至可以移除你的超級管理員身分,有效地把你鎖在自己的網路管理面板外。為了讓 Ultimate Multisite 客戶能夠精細控制其他超級管理員可以做什麼,我們有一個叫做 Support Agents 的附加功能。這個附加功能讓你可以建立另一種使用者——代理人(agent)——只擁有他們在網路上執行任務所需的權限。
子網站之間共用和不共用的內容
如我們之前提到的,WordPress multisite 的關鍵優勢之一是所有子網站共用相同的設定、核心檔案、佈景主題、plugin、WordPress 核心檔案等。
不過,有些元素是以每個子網站為範圍妥善隔離的。
- 例如,每個子網站都有自己的上傳資料夾。因此,某個子網站使用者上傳的檔案無法在另一個子網站上存取。
- 每個子網站都有自己專屬的管理面板,可以啟用或停用 plugin 或佈景主題,除非它們被超級管理員在網路層級啟用。
- 大多數資料庫資料表是為每個子網站分別建立的,這表示文章、留言、頁面、設定等都是以每個子網站為範圍。
WordPress Multisite 的使用者管理
WordPress multisite 中一個較為敏感的議題是使用者管理。WordPress 使用者資料表是少數在所有子網站之間共用的資料表之一。
根據你打算用網路建構什麼,這種安排可能會產生一些問題。以下範例有助於說明最迫切的問題。
想像以下情境:
你建立了一個 WordPress multisite 網路,開始以月費方式提供子網站給想要擁有電商商店的人。
你的第一位付費客戶是 John。你在網路上為 John 建立了一個網站,安裝所有必要的 plugin,然後為 John 建立一個使用者帳號讓他管理商店。
接著來了第二位客戶 Alice。你為她做了同樣的事,現在她在你的網路上也有一個商店了。
John 和 Alice 都是你的客戶,但他們彼此不認識。更重要的是,如果其中一人造訪另一人的商店網站,他們完全不會知道這個商店是託管在同一個網站網路上。
有一天,John 需要買一雙新鞋,他在 Alice 的商店找到了完美的鞋子。當他嘗試完成購買時,卻收到「電子郵件已被使用」的錯誤訊息,這很奇怪,因為 John 百分之百確定這是他第一次造訪 Alice 的網站。
這裡發生的事情是,John 的使用者帳號在整個網路中是共用的,所以當他嘗試在 Alice 的網站上建立帳號結帳時,WordPress 會偵測到已經存 在相同電子郵件地址的使用者,然後拋出錯誤。
注意:我們了解這對某些使用情境來說有多糟糕,所以 Ultimate Multisite 提供了一個選項,可以繞過檢查現有使用者的一般流程,允許使用相同電子郵件地址建立多個帳號。每個帳號都綁定到一個子網站,所以衝突的風險降到最低。在上面的例子中,John 不會收到錯誤訊息,可以順利買到那雙鞋。這個選項叫做「啟用多帳號」(Enable Multiple Accounts),可以在 Ultimate Multisite → Settings → Login & Registration 中啟用。
雖然使用者資料表是共用的,但子網站管理員或超級管理員可以把使用者新增到子網站或從子網站移除,而且使用者甚至可以在不同的子網站上擁有不同的角色。
效能考量
WordPress multisite 在可支援的網站數量方面非常強大。這點可以從 WordPress.com、Edublogs 和 Campuspress 都是基於 multisite 的服務,而且各自託管數千個網站的事實得到驗證。
雖然理論上你可以在單一 WordPress multisite 安裝上託管的網站數量沒有上限,但實際上能順暢運作的網站數量會因多種因素而有很大差異:網站的動態程度、子網站可用的 plugin 有哪些等等。
一般來說,你的網路越簡單越好。優先選擇內容不太動態的網站(這讓它們非常適合採用積極的快取策略),並盡量保持 plugin 組合輕量(啟用的 plugin 數量越少越好),可以大幅增加你能託管的子網站數量。
最棒的是,由於這裡一切都是 WordPress,你已經熟悉且喜愛的效能改善工具同樣適用於 multisite 網路。
Multisite 的主要瓶頸是資料庫,但如果其他一切都設定正確,通常要到幾千個網站之後才需要擔心這個問題。即使到那時候,也有可以逐步加入的解決方案(例如資料庫分片解決方案)。