「把 WordPress 導出成靜態 HTML」是簡單的那一部分——已經有幾款插件能做到。真正決定這次遷移成不成功的,是所有不是純內容頁面的東西會發生什麼事:評論、站內搜尋、聯絡表單,以及(如果你在經營商店)WooCommerce 的價格與購物車。沒有配套方案的靜態導出,會直接讓這些全部失效。

天真的靜態導出會弄壞什麼

  • 評論——靜態檔案上沒有 PHP 在運行,無法接受評論送出。
  • 搜尋——WordPress 的搜尋是一次資料庫查詢;靜態網站沒有資料庫可查。
  • 聯絡表單——表單插件會送到一個在靜態輸出上已經不存在的 PHP 處理端點。
  • WooCommerce 的價格、庫存與購物車——任何需要在請求當下保持最新的東西,都沒辦法烘進幾小時甚至幾天前產生的靜態檔案裡。

解法:代理,而不是放棄

可行的做法,是讓你的 WordPress 安裝完全照現在的方式繼續運行——同一個主機、同一個資料庫、同一批插件——並從邊緣節點以靜態方式提供一切內容,除了少數真正需要打到真實 WordPress 的請求。靜態站前面的路由器(Pinery Static 用的是 Cloudflare Worker)會檢查進來的請求,把評論送出、搜尋查詢、表單提交,以及 WooCommerce 的價格/購物車請求悄悄轉發回你真正的 WordPress 後台,而每個一般頁面載入則直接由靜態導出即時提供。

遷移步驟,大致依序

  1. 讓 WordPress 後台留在原地。 不要把這當成遷移主機的一部分——後台繼續運行,成為代理實際對話的對象。
  2. 執行一次完整的靜態導出,並在上線前檢查輸出結果有沒有明顯問題——這是提早抓出遺漏頁面或格式錯誤網址的時機。
  3. 把靜態輸出部署到你自己掌控的 Cloudflare Pages 專案。
  4. 把代理路由器放在前面,讓動態請求轉發回 WordPress,而不是撞上靜態的 404。
  5. 把網域指向新的部署——理想上透過不需要停機的同網域遷移路徑。
  6. 之後採增量方式重新導出。 每次發佈或更新內容,只需要重新導出有變動的頁面,不用整站重來。

完成之後你會得到什麼

從 CDN 邊緣提供的靜態頁面,比 WordPress 能直接提供的任何方式都更快——沒有 PHP 執行、沒有資料庫查詢、也沒有插件在每次請求時的額外負擔——而評論、搜尋、表單與商店功能則照舊運作,只是換成了代理而非原生處理。想知道這對聯盟轉換率為何重要,請見我們的效能指南;如果你在比較靜態導出工具,也可以參考Simply StaticWP2Static 的比較。