網站搬家後 Elementor 字型全跑掉!1 段 SQL 清光殘留舊網域

把客戶網站從暫存網址搬到正式網域,DNS 對接、SSL 憑證一切都設定妥當,正準備收工時,卻發現全站的 Elementor 頁面字型全部跑回新細明體或 Times New Roman。檢查了所有設定,樣式都還在,但字型就是載入失敗。

這個狀況在業界俗稱「Elementor 字型殘留」,原因不是 DNS 沒生效,也不是佈景主題壞掉,而是網址在資料庫或靜態檔案裡被「寫死」了。如果只是重新儲存一下頁面或許能救回一個頁面,但要一個一個點開幾十個頁面來修,顯然不切實際。

為什麼搬家後字型網址會卡住?

Elementor 為了提升 Google Fonts 的載入效能與隱私合規,在較新版本中除了內聯輸出樣式外,還會在 /wp-content/uploads/elementor/google-fonts/ 資料夾下生成靜態 CSS 檔案。這些快取檔案的內容會直接包含完整的字型 URL。

當你使用 All-in-One WP Migration、Duplicator 或其他遷移工具時,雖然資料庫裡的文章內容多半會被工具自動取代成新網域,但這些靜態 CSS 裡寫死的舊網域往往會被忽略。瀏覽器嘗試從新網域去抓取帶有舊網域的資源路徑時,會因為混合內容或 CORS 阻擋而直接拋棄請求。

用一段 SQL 徹底清光 Post Meta 裡的舊網域

一般處理搬家殘留會跑資料庫搜尋取代,但字型設定往往藏在序列化的資料裡。對於 Elementor 頁面資料,最常殘留舊網域的地方在 wp_postmeta 這個資料表。直接執行一段 SQL 來更新,比外掛跑得更底層。

UPDATE wp_postmeta 
SET meta_value = REPLACE(meta_value, 'https://old-domain.com', 'https://new-domain.com') 
WHERE meta_key = '_elementor_data';

為什麼直接改資料庫會比外掛更可靠?

序列化資料的長度校驗是 WordPress 標準搜尋取代外掛的常見痛點。當新舊網域字元數不同時,外掛必須先反序列化、修改、再序列化才能成功。這段 SQL 直接操作字串,雖然簡單粗暴,但針對 metadata 中存儲的 URL 字串特別有效,因為 JSON 結構通常能容忍這類的直接字串替換。

💡 直改 SQL 的雙重優勢

  • • 無需依賴外掛,執行速度快。尤其當 meta 表幾十萬筆資料時,外掛容易卡死。
  • • 直接跳過 PHP 記憶體限制,解決序列化崩潰風險,適合緊急搶修。

清除本地字體快取的替代方案

處理完資料庫,常會漏掉伺服器上的實體檔案。如果你還是看到字型請求回傳舊網域,那代表 /uploads/elementor/ 裡有東西需要處理。

如果覺得手動進去資料夾刪除太麻煩,可以在 functions.php 寫一小段程式碼強制清空內容,讓 Elementor 在下次請求時自動重建正確的新網址 CSS。

add_action('init', function () {
    $font_dir = WP_CONTENT_DIR . '/uploads/elementor/google-fonts/';
    if (is_dir($font_dir)) {
        $files = glob($font_dir . '*.css');
        foreach ($files as $file) {
            file_put_contents($file, ''); // 清空內容,保留檔案結構
        }
    }
});

更安全的方式:重新生成 CSS

這一段程式碼是「暴力清空」,強制系統重建。如果不想動程式碼,正規做法是進 WordPress 後台,前往「Elementor → 工具 → 重新生成 CSS」,並確定將「Elementor 快取」功能清除。這種正規清法能確保所有動態 CSS 都指向正確的新網域。

踩坑提醒與實務開發建議

一、執行 SQL 前務必備份資料表

就算 SQL 看起來只是替換字串,一旦滑鼠滑掉或網域格式打錯,Elementor 頁面會直接變成空白。備份 wp_postmeta 是最低限度的保障。

二、注意網址結尾的斜線

WordPress 存入資料庫的網址有時帶斜線,有時不帶。安全起見,建議跑兩次取代:一次取代 https://old.com,一次取代 https://old.com/,雙重確保序列化資料內的入口無殘留。

三、不可忽略物件快取(Object Cache)

如果你管理的網站使用 Redis 或 Memcached,執行完資料庫更新後字型依然沒恢復,是因為快取還在記憶體中。必須透過 WP CLI 執行 wp cache flush 或從主機控制台重啟物件快取,否則你會誤以為 SQL 沒生效。

四、提醒客戶清除瀏覽器快取

工程端全部處理完,但客戶回報還是看到舊字型時,可能是瀏覽器還咬著舊的 CSS。建議在搬家後先進入無痕模式確認,確認正常後,請對方強制刷新或清除瀏覽器暫存。

文章分享