WordPress 網站經營一段時間後,可能會因為許多原因需要大量的將某個內容替換為新的內容,白話文就是進行「尋找並取代」。有可能是更換某個字詞的翻譯、更新網址的某個字串等等,例如我曾經遇過這些需求:
- 將達郝更新為達豪
- 大量更新聯盟行銷連結的某個參數以正確追蹤成效
- 將….更新為…
諸如此類的需求三不五時就會出現,最土法煉鋼的方法當然是逐篇更新,這樣不僅沒效率,還很容易遺漏,這時候就可以使用 Better Search Replace 這個外掛批次更改資料庫的內容、提升更新的效率。
這篇文章會分享這個外掛的安裝與使用方式,並說明注意事項。
安裝
於 WordPress 後台的外掛安裝畫面搜尋 Better Search Replace 就可以找到這個外掛(縮寫為 BSR),安裝並啟用即可,想知道更多外掛細節請參考這個網址。
使用流程
Step 1
安裝並啟用 Better Search Replace 後,由側邊欄的「工具」可以進入使用畫面。使用方式很簡單,輸入「搜尋字串」與「取代為」,並「選取資料表」。
白話文就是:跟系統說你想將哪一個字串(即:搜尋字串)更新成新字串(即:取代為),並說明要更新哪些資料表的內容(選取資料表)。
這階段最讓人困惑的是「選取資料表」到底該選哪些,這時候先「全選」,並確保勾選「執行模擬作業」,再點擊「執行搜尋/取代」。
因為選取所有的資料表,系統會跑得比較久、下方會顯示進度列,請耐心地等它跑完。
Step 2
跑完模擬作業之後,畫面會顯示結果,先看一下系統到底有沒有找到相關資料,通常是有啦,我們應該不會輸入一個根本不存在的內容。這邊的重點是要點擊「按一下這裡」,可以觀察到底外掛在哪些資料表找到這些內容,這些資料表就是「潛在」需要被更新的資料表。
P.S. 有時候我們想取代的內容可能有特殊字元或字元轉換問題,不確定要輸入哪一個的時候,也可以先用這個方式測試看看系統是否有找到相關資料。
點擊「按一下這裡」後,可以看到系統在哪些資料表找到相關字串,這邊只能看到統計清單,需要付費才可看到詳細資料。
這邊的資料表有非常多個,考驗我們對 WordPress 資料表的熟悉程度以及對自身系統的掌握度,還有…到底想取代哪邊的內容。如果只是想更新文章內容,那更新「DB 前綴__posts」這一張表就好,WordPress 預設的 DB 前綴是「wp_」,如果沒變更過 DB 前綴,那資料表名稱應該是「wp_posts」。
切記…不是所有的資料表都要更新,假設這邊顯示轉址設定資料表也有含這些資料,不代表我們需要更新它。如果只是要更新文章的內容,最保險的方式是只更新前述資料表。
記住要更新的資料表之後就退出這個畫面,那是這步驟的重點!
Step 3
回到一開始的畫面之後,直接使用瀏覽區的搜尋功能找到想更新的資料表,畫面也會提示如何選擇多個資料表。完成選取之後,「取消」勾選「執行模擬作業」,這時候應該是要直接更新資料表內容,如果沒有取消模擬,就只是剛剛的流程再跑一次,不會將這些更新寫到資料庫中。
確認無誤之後,點擊「執行搜尋/取代」,這次執行會快很多,因為我們已經先指定需要執行這個動作的資料表,不像一開始要掃系統所有資料表。
完成之後同樣會顯示結果,正確無誤的話系統會顯示已更新多少資料表,不應該是「0」,如果沒更新任何資料表,那就是還處於模擬模式。
注意事項
- 執行前先備份:這個動作是更新資料庫內容,為了避免出錯,強烈建議進行前先備份資料庫,出錯才好還原
- 確認結果:更新完資料庫之後,記得找幾個範例確認是否如預期更新,沒有的話要仔細檢查原因
- 慎選字串:尋找字串的時候要非常小心,越精確越好,這樣才能避免更新到不該更新的地方,以更新網址參數為例
- 目的是將參數值「q=1234」更新為「q=5678」
- 如果下的指令是「將1234更新為5678」,任何1234的字串都會被更新,他可能是在本文文案,或者是網址其他參數的內容
- 正確作法是跟系統說要將「q=1234」更新為「q=5678」
- 清除快取:確認完成更新卻沒在前台看到更新後的結果,請先清除快取,特別是資料庫快取