2017-03-28 47 views
1

簡要概述:我們正試圖將一些長期(7年以上)WordPress多地點安裝從子域轉換爲子目錄。更改wp-config.php.htaccess都很好。但是其中一些安裝有超過1000個站點,並且在整個數據庫中散佈可以有大量的abc.multisite.com實例。大型數據庫替換方法

我試圖找到又不影響123abc.multisite.com導致123multisite.com/abcabc.multisite.com轉化爲自動化到multisite.com/abc,當然最好的辦法。

所有的find /替換插件我見過能做到這一點只能做一次一個單一的搜索,和我有成千上萬的記錄來代替。

最好的方法是什麼?是否有一條SQL命令可以通過PHP循環遍歷數百個數據庫表?

我可以使用get_sites()函數得到一個網站列表,並通過它循環。

還是有更好的工具導出數據庫,查找/替換有(其中一些數據塊的大小會崩潰原子/崇高/支架。

回答

1

如果您有(SSH)訪問WP CLI,你可以在你的站點根目錄運行以下命令:

wp search-replace abc.multisite.com multisite.com/abc 

對於Multisites,如果你希望所有表中進行搜索,您將需要--network標誌

http://wp-cli.org/commands/search-replace/

默認情況下,該命令使用註冊到$ wpdb對象的表。 在多站點上,這只是當前站點的表格,除非 - 網絡已指定。搜索/替換智能地處理PHP序列化數據,並且不會更改主鍵值。

wp search-replace abc.multisite.com multisite.com/abc --network 
+0

太謝謝你了!我不知道WP-CLI的存在。我已經得到了它的總體思路和它似乎是大部分工作(有幾個問題,更換網站的網址仍然時) 雖然我還是要找出細微差別我的特殊情況,我相信這是去工作非常適合我需要的東西 - 謝謝! 注:'WP --info'沒有輸出對我來說,原來對了Suhosin有'WP-cli'破例需要,現在,它的工作原理就像一個夢。再次感謝! – Xhynk