Wordpress

WordPress 換主題會不會弄丟資料?先搞懂這條界線

多數人以為佈景主題只是網站的外觀,換掉之後頂多版面變個樣子。實際按下「啟用」之後,不少人才發現眼前的畫面有點矛盾,同一篇文章,標題、內文、附的圖片全部都還在原位,可是首頁原本排得整整齊齊的版面,側邊欄的小工具卻突然變得空空的,甚至整個亂了套。同一次操作,為什麼有些東西完全沒事,有些卻像消失了一樣?這正是 WordPress 換主題最容易讓人心慌的地方,換完之後,資料會不會就此不見。

WordPress.org 官方文件說得很直接,佈景主題改變的是網站顯示的方式,不會更動底層的程式;換句話說,內容跟外觀原本就是分開存放的兩層東西。這句話聽起來簡單,卻是接下來每一節要拆解的關鍵框架。先弄懂哪些東西真的跟主題綁在一起、哪些其實跟主題完全無關,才知道換主題那一刻,螢幕上消失的畫面,是真的不見了,還是只是暫時找不到路回家。

換主題等於砍掉重練,還是完全零風險?

沒碰過換主題的新手,容易把這件事跟「網站重練」畫上等號,深怕文章、圖片這些累積下來的內容會跟著不見;操作過幾次、覺得「應該還好」的人,又容易走向另一個極端,以為換主題只是換一件外套,裡外都不會有任何影響。這兩種認知都稱不上正確。

真正決定一樣東西會不會消失的,不是「換不換主題」這件事本身,而是這樣東西原本存放在哪裡,是存在網站的資料庫裡,還是寫進了主題自己的檔案裡。這條界線,就是接下來每一節要拆解的框架。

WordPress 核心的設計,從一開始就把「內容」跟「外觀」分成兩層存放。文章、頁面這類內容進資料庫,主題負責的則是把這些內容排版顯示出來的樣板檔案跟程式邏輯。資料庫那一層不會因為換了哪一套主題就被清空或改動;真正會跟著換掉的,只有主題檔案本身負責的顯示邏輯,跟寫死在主題裡的專屬設定。分清楚這條界線之後,換主題要面對的問題就簡單很多,哪些東西鐵定留著、哪些才需要多留意,才是重點。先從穩穩留著的那一半講起。

依資料存在資料庫還是寫進主題檔案,把換主題後會不會不見分成完全不動、暫時對不上、真的會消失三類
換主題會不會弄丟資料,關鍵看它存在哪:資料庫裡的穩穩留著,寫進主題檔案的才會跟著主題被換掉。

文章、頁面與媒體庫,換主題後原封不動

網站裡最讓人擔心的東西,像是文章、頁面、留言,還有媒體庫裡存的圖片跟影音檔案,加上使用者帳號跟權限角色,全部都存在資料庫裡,跟目前用哪一套主題完全無關。不管換幾次主題,這些內容都不會被刪除或改動,啟用新主題只是換了一套讀取跟顯示這些內容的樣板檔案,內容本身動都沒動。

外掛的資料也是同一套邏輯。電商外掛累積的商品跟訂單、SEO 外掛裡填好的關鍵字跟描述,這些資料各自存在外掛自己的資料庫表格或儲存空間裡,跟主題是兩套完全獨立的系統。主題負責的是畫面,外掛負責的是功能跟資料,兩者不會互相牽動,換主題不會動到外掛累積的任何資訊。

不過有一個狀況最容易被誤會成圖片不見了。媒體庫裡的原始圖片檔案本身還在,一張都不會少,但 WordPress 開發者文件說明,每一套主題可以在 after_setup_theme 這個掛載點,呼叫 add_image_size() 這支函式,自己註冊一套縮圖尺寸規格。換了新主題,等於換了一套縮圖規格,舊主題產生的縮圖尺寸如果跟新版面對不上,畫面上看到的縮圖就可能變形,或被裁切得不好看,甚至讓人誤以為圖片消失了。這其實只是縮圖需要重新產生,原始圖片檔案從頭到尾都還躺在媒體庫裡,只要跑一次縮圖重建的工具,就能把對應新主題尺寸的縮圖補齊。

哪些東西看起來不見了,其實還在資料庫裡?

文章、圖片這類核心內容穩得像鐵板一塊,但換主題後,畫面上偏偏有一批東西看起來完全消失,讓人心裡一驚,側邊欄的小工具不見了、選單跑掉了、外觀設定變回一片預設值。這一節要拆的正是這塊最容易被誤會的中間地帶。很多人一看到這些畫面變化,就直覺以為設定被刪掉了,其實不是這樣。它們都還乖乖待在資料庫裡,只是換了一套主題之後,暫時對不上新主題的插槽或儲存位置,需要手動重新接上去而已。下面分三塊,一項一項拆開來看。

小工具,去了「非使用中小工具」區

換了主題之後,如果側邊欄或頁尾看起來突然空了一塊,原本擺在那裡的小工具,像是最新文章、分類清單、搜尋框這些,並沒有被刪除。真正發生的事是,新主題的小工具區域,不管是名稱還是數量,常常跟舊主題不一樣,WordPress 找不到對應的位置可以放,就會自動把這些對不上的小工具連同它們的設定,一起搬到外觀選單裡小工具頁面最下方的「非使用中小工具」區保留著。WordPress.org 官方文件也直接寫明,換了主題卻好像少了小工具的話,只要往下捲動畫面就能找到非使用中小工具區,所有小工具跟它們的設定都完好保存在那裡。要讓這些小工具重新出現在畫面上,只需要手動把它們拖回新主題對應的插槽位置即可。

換主題後小工具沒被刪除,只是被移到非使用中小工具區連同設定保留,手動拖回新主題側邊欄即可
小工具不會消失,只是暫時被移到「非使用中小工具」區,換主題前先截圖記錄配置,之後拖回原位就好。

選單,只是要重新指定位置

自訂選單本身還在,裡面排的項目、連結也完全沒有變動,問題出在每一套主題定義的選單位置本身。像是主選單、頁尾選單這類位置的名稱,不同主題會取不一樣的名字,數量也未必相同。換了主題之後,舊選單並不會自動套進新主題的任何一個位置,畫面上看起來就像選單整個消失。這時候要做的,是到外觀選單裡的選單頁面(如果新主題是區塊主題,則是在外觀編輯器裡的導覽區塊),把原本的選單重新指定到新主題提供的位置上,選單裡的項目連一個都不用重新輸入。

外觀自訂(Customizer)設定值,是依主題分開存放的

顏色、背景圖、標誌這類項目,平常是透過外觀選單裡的自訂功能去設定,換了主題之後,打開自訂功能常常會看到整片變回預設值,讓人以為之前設定的東西被清空了。實際情況剛好相反。WordPress 開發者文件說明,這類設定值在系統裡叫做主題修改值(get_theme_mod()set_theme_mod()),它是依照目前作用中的主題各自分開儲存的一種資料類型,跟不分主題、全站共用的一般設定選項,是兩種不同的儲存方式。換句話說,每一套主題都有自己專屬的一組主題修改值,換主題只是換了讀取哪一組資料,舊主題那一組設定並沒有被刪除,只是暫時不被讀取而已。之後如果切回舊主題,原本設定的顏色跟標誌,會原封不動地重新出現。透過自訂功能輸入的額外 CSS 樣式,也是存進資料庫裡,不是寫進主題檔案裡,同樣不會因為換主題而消失。

外觀自訂設定不是被刪除,而是被分開存放,這是這一節要記住的重點。換成使用區塊主題(Full Site Editing)之後情況又不一樣,自訂功能會直接沒有得用,改用外觀選單裡編輯器的樣式設定去處理同樣的事,這一段留到下面談區塊主題的地方再細講。

哪些東西換了主題後,真的不會留下來?

小工具、選單、外觀設定這幾樣,說到底都還在資料庫裡待著,只是暫時對不上新主題的位置。但不是所有東西都這麼幸運,真的有一批東西是跟主題檔案綁在一起,主題一換,連同程式碼一起被整包換掉,再也沒有別的地方可以把它讀出來。這一節底下,用幾個小標題逐一列出這些真正的風險項目,每一項都會講清楚,為什麼它真的沒有地方可以存。

主題自帶的「主題選項」或自訂設定面板

不少商用範本型的主題,會自己做一套主題選項介面,讓使用者可以在裡面設定自訂標誌、字型、頁首頁尾版型這些項目。這整套介面,連同裡面填過的值,都是主題程式碼自己寫出來的功能,不是走 WordPress 核心提供的自訂功能,也不是存進前面提到的主題修改值那套系統。WordPress.org 官方文件對主題檔案結構的說明講得很清楚,主題本質上是一組獨立的樣板檔案跟程式碼集合。主題一換,這整套自訂介面跟裡面填過的值,會跟著主題檔案一起被換掉,沒有其他地方能把這些設定值讀出來,只能到新主題對應的介面(如果有的話)重新設定一次。

主題自帶頁面編輯器排出來的版面

頁面版面用什麼工具排出來的,決定了換主題之後它撐不撐得住。有些商用範本型主題,內建了自己的一套頁面編輯器,用來排版首頁或特定頁面。這跟 Elementor、Beaver Builder 這類獨立於任何主題、可以裝在任何主題上使用的頁面編輯器外掛,是完全不同的兩回事。用主題自帶的編輯器排過的版面,一旦換掉主題、連帶停用了這套內建編輯器,原本排好的版面會直接打散,畫面變回接近純文字的樣子,得靠新主題自己的排版工具重新編排一次。

判斷風險高低的關鍵,就在編輯器是不是獨立於主題之外。用這類獨立外掛型編輯器排的版面,通常換了主題還能繼續使用、不太受影響;但用主題內建的頁面編輯器排出來的版面,才會在換主題後面臨打散重排的風險。動手排版之前,先弄清楚自己用的是哪一種,能少掉不少換主題後的麻煩。

主題專屬的短代碼

主題內建的頁面編輯器,或某些功能模組,常常會在內容裡留下一段短代碼,畫面上長得像方括號包住一段文字的樣子,例如 [button]立即購買[/button] 這種寫法。這段短代碼要靠主題本身的程式碼,才能被解讀成一顆按鈕之類的畫面效果。換了主題之後,原本負責解讀這段代碼的程式不見了,短代碼就會直接以一串方括號文字的原始樣子顯示在頁面上,不會自動變不見,也不會自動變回按鈕。這種情況通常出現在用了主題自帶頁面編輯器排版的頁面裡,發現內容出現一堆方括號文字時,需要手動清乾淨,或改用新主題的排版工具重新編排一次。

主題註冊的自訂文章類型與分類

並不是所有內容都只有「文章」一種形式。有些主題會加開一種專屬的內容類型,像是作品集、推薦,讓使用者可以把某一類內容分開管理。這些內容本身的資料,其實還是乖乖存在資料庫裡,沒有不見。問題出在文章類型這個東西,本身要靠程式碼在特定階段註冊才會存在。WordPress 開發者文件寫明,自訂文章類型必須透過程式碼呼叫 register_post_type() 這個註冊函式才能生效,後台才會出現管理這個類型的介面。主題一換,負責註冊的程式碼跟著整包消失,後台就找不到管理這批內容的畫面,前台也沒有對應的樣板可以顯示,等於資料還在,卻看不到也用不到,除非新主題或另外裝一個外掛重新把這個文章類型註冊回來。這份文件也建議,自訂文章類型比較理想的做法是寫在外掛裡,而不是寫進主題,這樣使用者累積的內容,才不會因為換一次主題就整批「暫時消失」一次。

主題內建的輪播/滑桿

首頁的全螢幕輪播,同樣是不少主題喜歡內建的功能,用來輪流展示幾張大圖或宣傳訊息,吸引訪客第一眼的注意力。這類效果通常也是主題程式碼寫出來的一部分,沒有獨立於主題之外運作。換了主題,原本的輪播功能會直接跟著消失,不會留在其他任何地方,也沒辦法像小工具那樣,靠系統自動搬去別處保留。如果換到新主題之後還想要類似的輪播效果,得另外找一個獨立於主題之外的做法,例如透過頁面編輯器外掛自己搭一組輪播區塊,這樣以後不管換幾次主題,都不用重新找一次類似的功能。

寫進主題檔案的自訂程式碼

如果曾經直接把追蹤碼、自訂功能寫進主題的 functions.php 或版型檔案裡,這些程式碼就是跟著主題檔案一起存在的東西。WordPress.org 官方文件說明,主題本身就是一組樣板檔案、程式檔案跟樣式表組成的集合,functions.php 也是其中一部分。換了主題,等於把整包主題檔案換掉,這些自訂程式碼不會留在別的地方,換完之後,原本靠這些程式碼運作的功能就會停止,得在新主題裡重新加回去一次。比較省事的做法,是改用不綁定特定主題的方式管理這些程式碼,例如透過程式碼片段類的外掛來放追蹤碼或自訂功能,以後不管換幾次主題,這些程式碼都不用重新處理一次。

換成區塊主題(FSE),情況有什麼不同?

前面說的「小工具搬去非使用中區」「自訂功能依主題分開存放」這一整套邏輯,遇到區塊主題(Full Site Editing,WordPress 自 5.9 版起推出的主流主題型態)就不完全適用了,因為區塊主題根本不使用傳統的小工具跟自訂功能這兩套系統。

WordPress.org 官方文件說明,區塊主題不靠小工具,而是靠區塊來處理原本小工具在做的事,原本想放小工具的地方,現在改成放區塊即可。自訂功能在區塊主題裡也不存在,除非有外掛或主題要求開啟才會出現,原因是自訂功能能做的事,現在都能透過區塊做到,像是網站標題、標語、標誌都各自有對應的區塊可以用,顏色這類設定則搬到外觀選單裡的編輯器樣式設定去處理。也就是說,從傳統主題換成區塊主題,舊的小工具跟選單設定,不是拖一拖、指定一下位置就能接回去,而是得在編輯器裡用區塊重新搭建一次,等於把原本的版面用新的方式再排一遍。

傳統主題用小工具與自訂功能、有即時預覽;換成區塊主題後改用區塊與編輯器樣式設定,且沒有即時預覽
換成區塊主題後,小工具、自訂設定、預覽全改用區塊和編輯器樣式處理,等於得用新方式把版面重排一次。

另外一個差別在預覽新主題的方式上。WordPress.org 官方文件提到,區塊主題目前沒有即時預覽這個選項,想在啟用之前先看看效果,得先架一個測試站來試用。如果新主題不是區塊主題、已經下載好還沒啟用,即時預覽功能可以讓你看到套用網站自己既有內容之後的樣子,而不是只看主題內建的示範內容,這種預覽方式比只看示範內容準確得多,建議優先選用。如果是區塊主題換另一套區塊主題,更建議直接架測試站跑一次,才看得出換了之後,自己網站真實的樣子會變成怎樣,而不是被漂亮的示範內容誤導。

在外觀佈景主題頁滑到想換的佈景主題卡片,按下啟用按鈕即可切換主題
換主題就在「外觀 → 佈景主題」,滑到想換的主題卡、按下「啟用」就完成切換。

換主題前的行前檢查清單

把前面幾節點出的每一種風險收攏起來,剛好可以變成一份 WordPress 換主題前的行前清單,你可以照著這七個步驟一步一步準備,每一步都對應到前面講過的原理,不是憑空條列的待辦事項。

  1. 完整備份整個網站,包含資料庫跟檔案。你可以用備份外掛,或直接用主機商提供的備份工具,確保換主題出狀況時能還原回換之前的樣子。
  2. 記錄目前的小工具配置跟選單指定狀況,包括哪個小工具放在哪個側邊欄或頁尾、哪個選單指定到哪個位置。最簡單的做法是直接截圖存查。前面談小工具跟選單那兩節提過,這些換主題後多半要手動重新接上,你先記錄清楚,才知道之後要接成原本的樣子。
  3. 檢查有沒有直接寫進主題檔案的自訂程式碼,像是流量分析用的追蹤碼,或寫在 functions.php 裡的自訂功能。有的話先複製起來備查,也可以考慮之後改用不綁定主題的方式管理,例如程式碼片段類外掛,下次換主題就不用重找一次。
  4. 檢查目前的主題是不是內建自己的頁面編輯器或短代碼,這在商用範本型主題裡很常見。有的話先確認哪些頁面用到,並考慮先把這些頁面的內容,另外備份成文字檔或截圖。
  5. 檢查有沒有用到主題自己註冊的文章類型,像是作品集這類。有的話先確認新主題,或裝上某個外掛之後,看不看得到、能不能正常顯示這批內容。
  6. 用即時預覽,或如果是區塊主題,先架一個測試站,看過新主題套用你網站自己內容之後的實際樣子,確認沒有明顯問題,再正式啟用。
  7. 如果是從傳統主題換成區塊主題,心裡要先有準備,小工具跟選單需要在編輯器裡用區塊重新搭建,不是單純拖曳幾下就能接回去。

換完主題後,這幾個地方要重新核對

啟用新主題之後,有幾個地方要逐一核對,才算把整個換主題流程走完。把非使用中小工具區裡的小工具,依照原本記錄的配置,拖回新主題對應的插槽;把選單重新指定到新主題提供的位置上;打開首頁跟幾個主要頁面,確認版面顯示正常,沒有跑版或元素重疊。

外掛型的 SEO 資料,像是關鍵字、描述這些設定,通常不會受影響,因為它存在外掛自己的資料表或中繼資料裡,不是主題的一部分,換主題動不到它。但這不代表可以完全不管,還是要人工核對一次標題階層,也就是頁面上 H1、H2、H3 這些標題的層級順序,有沒有因為新主題的版型設計而跑掉,畢竟這會影響到搜尋引擎理解頁面結構的方式。原本寫在主題檔案裡的追蹤碼,如果還沒照著前面清單的建議另外備份管理,這時候也要記得補上去,不然數據就會斷掉一段時間。最後別忘了清除快取外掛跟 CDN 的快取,不然訪客看到的可能還是舊主題的版面畫面,而不是剛換上的新主題。

換完主題後如果你發現流量或排名短期有些波動,先檢查是不是網站速度或版面結構跟著變動,而不是誤以為內容真的不見了,前面幾節已經說明,內容資料換主題並不會被清空,波動多半跟顯示層面的變化有關。

沒把握時,怎麼確保換主題安全?

沒有把握的時候,最保守、風險最低的做法,是先在測試站或網站的暫存副本上,完整跑過一次換主題流程。測試站是網站的私人副本,訪客看不到,可以在上面先套用新主題,確認排版、小工具、選單都沒問題,再把同樣的設定套用到正式站上。內容量大,或高度仰賴主題自帶頁面編輯器、自訂文章類型的網站,更應該先在測試環境驗證過,再考慮正式上線。

換個情境來說,假設某個經營線上課程的網站,原本沒發現首頁的報名按鈕,其實是靠舊主題自帶的頁面編輯器排出來的,直接在正式站換完主題,版面整個亂了套,報名按鈕跟著不見。後來改用測試站重新跑一次換主題流程,才抓出問題出在哪裡,順利排除之後才正式換上新主題。這說明先測試一次,比換完才發現問題,省事得多。

換回舊主題,同樣不是按一下就能全部復原的萬能還原鍵。只要舊主題的檔案沒有被刪除,內容資料一樣完整不變,但主題專屬的設定,一樣得重新設定一次。不管是換到新主題,還是換回舊主題,風險的邏輯是對稱的。

WordPress 換主題,資料會不會不見,答案不是單純的會或不會,而是有一條清楚的界線。存在資料庫裡的內容資料,不管換幾次主題,都會穩穩留著;真正會消失的,是寫在主題檔案裡、跟這套主題綁在一起的專屬設定跟功能。換主題之前,你先弄清楚這條界線畫在哪裡,永遠比換完才發現東西不見、事後手忙腳亂補救,要省事得多。

資料來源
  1. Work with themes — WordPress.org 官方文件
  2. Manage WordPress widgets — WordPress.org 官方文件
  3. add_image_size() Function Reference — WordPress 開發者文件
  4. get_theme_mod() Function Reference — WordPress 開發者文件
  5. Registering Custom Post Types - Plugin Handbook — WordPress 開發者文件
  6. Block themes — WordPress.org 官方文件