問題描述

我正在尋找最好和最安全的方式來開發本地的多個子站點使用多站點,並將它們移動到生產環境,當他們準備好了。

我已經使用現在已經存在的第一個子站點遷移了完整的多站點安裝。我寧願在本地服務器上開發其他站點,所以我將生產服務器單獨放置,但顯然我無法再進行完全遷移。

我尋找一個解決方案,但我發現的一切都是關於將單個站點移動到多個站點,或者相反,不要將子站點從多站點移動到多站點。

我想保留所有內容:設置,小工具等。

最佳解決方案

這可能有點乏味,但希望這有助於。從一個環境到下一個環境的變化越少,這個過程就越不痛苦。特別是,如果域,站點 id,文件路徑保持不變,這個過程就不那麼痛苦了。

這篇文章假設了一些數據庫管理的知識。這不是一個完整的步驟,因為您應該搜索論壇,並可能創建一個特定於您遇到問題的步驟的線程,例如,如果您需要幫助導出數據庫表。

最重要的事情是備份您的本地開發站點和新位置的整個數據庫和文件,以防萬一齣現問題。期待有問題。如果沒有,會驚喜。

移動主題文件應該很簡單。將您的主題文件上傳到 wp-content /themes 目錄,並照常激活它。我假設這是所有博客都可以訪問的共享主題。

將插件文件上傳到新位置的 wp-content /插件。不要激活它們

請注意,您遷移的博客的任何內容將位於 wp-content/blogs.dir/2/files 的目錄中,其中 2 是站點 ID 。如果可以在新位置維護此站點 ID,則應有助於在遷移到新位置後儘量減少數據庫中的衝突。否則,您將不得不更新數據庫以反映新的路徑。

您將需要導出與您嘗試遷移的博客相關的多站點表,並將其導入到新位置。您將必須編輯存儲與您正在遷移的博客相關的數據的表。確保這些表的前綴在新位置相同。

例如,您的博客的 wp_blogs 表包含允許 WordPress 多站點識別和使用您的博客的博客 ID,站點 ID,域和路徑。編輯這些不再正確的任何反映新位置的內容,但請嘗試執行此操作之前閲讀本文的其餘部分。

參見 Multisite Table Overview

要遷移您的 WordPress 和插件設置,要轉移博客,您需要在本地停用所有插件,然後導出您的 site specific tables(codex 參考),包括那些插件。將這些表導入新位置的數據庫。

確保新位置使用與導入的表相同的數據庫前綴。該前綴將包含您的博客的站點 ID,看起來像 wp_2_options, wp_2_posts, wp_2_postmeta 。見 Exploring WordPress Multisite by Lisa Sabin-Wilson

我假設你知道如何通過 phpmyAdmin 導入/導出,或者使用終端中的 mysqldump 命令。這超出了這篇文章的範圍,但這裏是一個應該有幫助的導出示例。

How do you mysqldump specific table(s)?(語法編輯稍微更清楚):

If you are dumping tables t1, t2, and t3 from database named mydb

mysqldump -u <username> -p <password> mydb t1 t2 t3 > mydb_tables.sql

在新站點上啓動插件之前,請先在 admin cp 中進行永久鏈接設置,並保存設置,將數據庫文件更新為新的站點 URL 。激活您的插件,看是否有任何問題。

您可能遇到的一個問題是您的表中的數據序列化。

「[…] 對舊域名或位置的引用將保留在數據庫中,這可能會導致鏈接或主題顯示問題。

如果您在整個數據庫中進行搜索和替換以更改 URL,則可能會導致數據序列化問題,因為某些主題和小工具存儲的 URL 的長度標記為 「When Your Domain Name or URLs Change

請記住,數據序列化可能會導致與您的插件相關的數據庫表中的衝突。不要對存儲在數據庫中的 URL 執行手動搜索和替換,而是使用之前的鱈魚鏈接中推薦的 database search and replace script 。如果數據庫中只有少數序列化實例,您可以通過 phpMyAdmin 手動進行編輯,也可以通過自己的首選方式來管理數據庫。

您可能遇到的另一個問題是,需要更新存儲在數據庫表中的任何不正確的文件路徑以反映新位置。這可能是由插件使用的媒體目錄或目錄,這取決於插件的設計。同樣,您將需要使用搜索和替換腳本來確保在更新文件路徑時沒有序列化衝突。或者,您可以通過表格手動更新它們。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。