問題描述
我在想,如果我將一個插件從 WPMU 移植到 WP,反之亦然,我可能會遇到什麼樣的問題。
説我從頭開發了一個插件,並希望這個插件與兩者兼容,我應該從 WPMU 或 WP 開始嗎?
最佳解決方案
您需要在兩個設置中進行測試,因為它們在許多情況下的行為不同。一些最顯著的區別是:
-
如果註冊激活回調,則需要檢查激活是否為 network-wide 。如果是,run the activation logic for all the blogs 而不是當前的。
-
如果插件是 network-activated,則添加新博客時,常規激活回調將不會觸發,因此您需要創建一個掛鈎到
wpmu_new_blog
操作的額外回調。它必須切換到新博客,執行激活邏輯,然後恢復當前博客。新博客的$id
作為第一個參數傳遞給處理程序。 -
如果您要創建自定義帖子類型,並希望顯示 「設置精選圖像」 元框,則需要確保 「媒體上傳按鈕」 設置已啓用 「圖像」 複選框。您可以使用
get_site_option( 'mu_media_buttons' )
進行檢查,並使用update_site_option()
進行設置。 -
上傳目錄的路徑是不同的,但只要您始終使用 wp_upload_dir()而不是常量,您將會很好。
-
每個博客都有大部分數據庫表的自己的副本,它們以博客 ID 為前綴。您通常不需要做任何特殊的操作,只要您使用 API與數據庫進行交互即可。
-
用户和 usermeta 表是例外; 它們在所有博客中共享。
如果您需要使用 API函數臨時訪問另一個博客的數據,然後 restore_current_blog()切換回來,您可以使用 switch_to_blog()。
您可以通過瀏覽 my plugin skeleton 的源來查看激活功能的完整示例。
次佳解決方案
沒有區別。
WordPress MU is no longer a separate project; it is continuing development as part of the main WordPress branch under the name multisite or MS.
在開發使用 multi-site 安裝時,由於有時文件處理和路徑有點棘手。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。