問題描述
作為 WordPress 管理員新手,我剛剛通過我的第一個 non-automatic WordPress 升級。
我將五種不同的 WordPress 安裝從 4.1.3 升級到 4.2 。
它們都是指託管在同一個主機上的不同網站,一個主域和四個插件域。
在每個網站上,我使用以下 plug-ins:
-
Akismet 在;
-
Yoast 的 Google Analytics(分析)
-
Google Adsense
-
Google XML Sitemaps 和
-
Jetpack 由 WordPress.com 。
為了簡化進一步管理,我考慮將所有五個安裝整合到單個多站點安裝中。
到目前為止,我發現很難找到關於這些插件與插件的網站上的多站點安裝的兼容性的確切答案。
插件的頁面是搜索這個的正確的地方嗎?
是否有中央位置可以找到這些信息?
最佳解決方案
有兩種類型的多站點兼容性:
-
被動兼容性:不做任何具體的細節,只是工作而不破壞任何東西。
-
活動兼容性:更改或擴展多站點特定行為。
我想你出來了 1. 見我的 slides from WordCamp Prague 2015 第二部分。
沒有關於多站點的任何內容的插件不應該被激活為網絡插件。例如,WooCommerce 在安裝過程中創建一些自定義表。如果你激活它,network-wide,子區別沒有得到這些表,天空將落在你的頭上。
不幸的是,大多數插件不檢查它們的激活類型,所以他們讓你做錯了激活。
相關的是 UX 問題,如管理員指針或特殊的”About” 頁面,您必須在 non-compatible 插件的子站點點擊。 Yoast』s WP SEO is one example 。這個插件很快就會被修復,我猜。 🙂
其他問題取決於您對該多站點的操作。如果您正在建立一個多語言網站,其中每個網站都使用一種語言編寫,並且這些網站彼此連接,則您要在撰寫內容時同步該帖子。這意味着您可以在掛鈎 save_post 上調用 switch_to_blog(),並保存連接的帖子。 save_post 在一個請求中將被多次調用。許多插件不知道這樣的情況,所以他們只是覆蓋連接的帖子的後期元信息,認為他們仍然是第一個帖子。
注意處理後期元數據的插件,並且缺少這樣的支票:
if ( is_multisite() && ms_is_switched() )
return FALSE;
這些插件不兼容。
類似的,雖然很難指定,但是當插件觸摸用户元字段或重寫規則時是一個問題。
一些插件嘗試將文件內容寫入文件,而不會在文件名中包含站點 ID 。他們也很可能被打破了。
像湯姆説的:創建一個測試安裝,運行你可以想象的每一個用例。你不能信任插件頁面,通常還沒有足夠的信息。
次佳解決方案
除非插件聲明它是兼容的,唯一可靠的方法是創建本地多站點安裝並進行測試。
有時你可以找到跡象,但這些都是壞的代碼的症狀,例如硬編碼數據庫表名,而不是使用 $wpdb 中的前綴,在這種情況下,即使不使用多站點,我建議您避免插入插件
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。