跳至內容
SEO 與爬蟲

如何關閉 WordPress 的 AI 功能(核心與外掛的差別,老實說)

找出到底是哪個外掛、主機商或 mu-plugin 加上了那個 AI 面板,安全地關掉它,並在 robots.txt 阻擋 AI 爬蟲又不賠上搜尋流量。

發布於

在 WordPress 裡,大家想關掉的 AI 功能幾乎都來自外掛、主機商或 WordPress.com,而不是自架的核心。在你把某段 remove_action 貼進 functions.php 之前,先打開外掛清單,找出真正在渲染那個 AI 面板的東西——在一個本來就已經出狀況的網站上,花力氣去移除一個核心根本沒有的功能,只是白費工夫。

這個區別很重要,因為修法完全不同。外掛的功能有設定開關;主機商塞進來的功能住在你的主機控制台,不在 WordPress 後台。而大家講「關掉 AI」時通常真正想問的另一件事——阻止 AI 公司拿你的文章去訓練——根本不是 WordPress 的設定,那是 robots 和伺服器設定的問題。

哪些是核心的,哪些不是

自架的 WordPress 核心並沒有開箱即用、面向使用者的 AI 寫作助手、AI 聊天機器人或 AI 圖片生成器。如果你在區塊編輯器裡看到 AI 的閃亮圖示,那是某個東西裝上去的。

AI 功能真正的來源:

來源典型功能在哪裡關掉
JetpackAI Assistant 區塊與編輯器面板Jetpack 設定裡的模組開關
獨立 AI 外掛內容生成器、聊天機器人、替代文字撰寫該外掛自己的設定畫面
SEO 外掛AI 標題/描述建議外掛設定,通常可逐項開關
頁面編輯器編輯器介面中的 AI 文案與圖片生成編輯器設定或帳號面板
代管主機商透過 mu-plugin 或控制台注入的 AI 助手主機控制台
WordPress.com平台提供的 AI 寫作工具WordPress.com 帳號設定,不在你的網站裡

WordPress 專案確實有持續進行中的 AI 相關開發——那些實驗性功能外掛,未來可能會進入核心。如果你用的是較新的版本,又看到某個 AI 味道的東西無法歸咎於任何外掛,先查你安裝的外掛清單,再查你這個版本自己的更新日誌,而不是直接假設有個核心預設值要你去過濾掉。這個保留說法是刻意的:這個領域裡跟版本綁定的說法過期得很快,而一個錯誤的說法會害你毫無理由地跑去改檔案。

找出真正加上它的東西

分批停用外掛,直到 AI 面板消失。土法煉鋼,但它給你的是確定的答案,不是猜測。

如果你有 WP-CLI,先列出所有啟用中的外掛:

wp plugin list --status=active --field=name

接著檢查主機商注入的程式碼,這些不會出現在一般的外掛畫面裡:

ls -la wp-content/mu-plugins/

必用外掛(must-use plugins)會自動載入,而且無法從後台停用。如果你的主機商在那裡放了一個 AI 助手,唯一乾淨的移除方式是透過他們的控制台——直接刪檔案,通常下一次平台更新它就又回來了。

正確地把它關掉

用外掛自己的設定。 這是無聊的答案,也是對的答案。Jetpack 尤其如此,它的架構就是各模組可獨立開關,所以你可以關掉 AI Assistant,同時保留統計、備份或其他你依賴的功能。多數獨立 AI 外掛都有逐項功能的啟用/停用勾選框。

如果你沒有在用這個外掛的其他功能,就把整個外掛停用。 一個裝著但「已停用功能」的 AI 外掛,每次請求還是會載入它的程式碼。停用比任何過濾器都更快、更安全,而且在效能上實際更輕。

remove_action 解除掛載是最後手段。 它確實有效,但前提是你知道外掛註冊時用的確切 hook 名稱、callback 和優先權,而且只有效到外掛改掉其中任何一項為止:

// Only if you have verified the exact hook, callback and priority.
// Runs late so the plugin has already registered its own hooks.
add_action( 'init', function () {
    remove_action( 'enqueue_block_editor_assets', array( 'Some_Plugin_Class', 'enqueue_ai_panel' ), 10 );
}, 99 );

老實說它的代價是:這種做法會無聲無息地失效。外掛更新改了類別名稱,你的移除就對不上了,AI 面板跑回來,而且不會有任何錯誤提醒你。如果你要用這個方法,把你移除了什麼記下來,並且在那個外掛每次更新後重新檢查。

同樣的警告也適用於從 JavaScript 取消註冊編輯器面板。那確實做得到,但你是用字串識別碼伸手進另一個外掛的註冊內容,而那個識別碼並不是公開契約。

不要照著論壇貼文去改 wp-config.php 的常數來擋 AI 功能。 沒有任何核心常數能關掉第三方外掛的 AI。如果某段程式碼宣稱可以,而你又無法在該外掛的官方文件裡找到那個常數,那它什麼也不會做。

另一個問題:阻止 AI 拿你的內容做訓練

這是另一回事,而且真正的焦慮多半在這裡。關掉編輯器面板,完全不會改變誰在爬你的文章。要控制那件事,得靠 robots.txt,如果你想要它能被強制執行,就得靠伺服器。

除非你的網站根目錄有實體檔案,否則 WordPress 會提供一份虛擬的 robots.txt。只要實體檔案存在,WordPress 就完全退場,爬蟲拿到的就是那個檔案。要編輯虛擬的那份,用過濾器:

add_filter( 'robots_txt', function ( $output ) {
    $output .= "\nUser-agent: GPTBot\nDisallow: /\n";
    return $output;
}, 10 );

手工組規則是最容易出錯的地方——一個代號寫錯就什麼都沒擋到,而 Disallow: / 錯放在某個代理上,可能把你從一般搜尋裡整個抽掉。robots.txt 產生器會把 AI 爬蟲的封鎖區塊和你原本的搜尋指令一起組好,讓你在上線前先看到完整的檔案。

主要業者公布並宣稱會遵守的代號:

代號業者涵蓋範圍
GPTBotOpenAI為模型訓練而進行的爬取
ChatGPT-UserOpenAI由使用者要求所觸發的抓取
ClaudeBotAnthropic爬取
Google-ExtendedGoogle你的內容是否用於 Gemini 訓練,而非爬取本身
Applebot-ExtendedApple用於 Apple 生成式模型的訓練
PerplexityBotPerplexity爬取
CCBotCommon Crawl許多模型拿來訓練的大量封存資料

兩個必須說清楚的但書。第一,robots.txt 是自願遵守的。守規矩的業者會照做;想無視它的東西就會無視。第二,封鎖不是沒有代價。其中有些代號決定的是你會不會出現在那些會引用並連結你的 AI 生成回答裡。全部擋掉,你在失去訓練曝光的同時,也失去了那個導流管道。想清楚你真正在意的是哪一個。

如果你要的是強制執行而不只是禮貌請求,就在伺服器層級封鎖。Apache 的 .htaccess

<IfModule mod_setenvif.c>
  SetEnvIfNoCase User-Agent "GPTBot|CCBot|ClaudeBot|PerplexityBot" ai_bot
  <RequireAll>
    Require all granted
    Require not env ai_bot
  </RequireAll>
</IfModule>

user-agent 字串可以輕易偽造,所以這擋得住誠實但你不歡迎的流量,擋不住鐵了心的抓取者。在 CDN 或防火牆層以驗證過的 IP 範圍封鎖更有力,而且現在多數 CDN 都提供一鍵式的 AI 機器人規則,比手寫清單好維護得多。

哪些做法沒有用

llms.txt 是提案,不是標準。 它是一份用來向語言模型描述你網站的 markdown 檔案提案。沒有任何主要業者承諾把它當成存取控制。加上它不花什麼成本,也許有助於模型讀懂你,但它擋不住任何東西。

noainoimageai meta 標籤幾乎沒有人遵守。 它們出自某一個平台的政策,不是跨產業的共識。加上去不會有害;期待它們生效才有害。

號稱能「阻擋 AI」的外掛,通常只是幫你寫 robots 規則。 那沒問題,而且那正是你自己十行就能做到的事。它不是法律或技術上的屏障,也沒有任何外掛能讓它變成屏障。

阻擋 AI 爬蟲,不會把已經進入訓練完成模型裡的內容拿掉。 你今天加的任何東西,都無法回溯地把你的文章從去年就發布的模型裡抽出來。robots 規則只對未來生效。

還是看得到 AI 面板

如果所有外掛都關了面板還在,再檢查一次 wp-content/mu-plugins/,然後看你的主機商控制台,接著確認你用的是不是 WordPress.com 而非自架——在那裡開關是放在帳號設定,不在網站後台。另外,如果功能在外掛更新後又跑出來,那是解除掛載的程式碼對不上了的典型徵兆,不是核心預設值在作祟。

FAQ

常見問題

WordPress 核心本身有需要關閉的 AI 功能嗎?

自架的 WordPress 核心並沒有內建、預設就會執行的 AI 寫作助手、聊天機器人或圖片生成器。編輯器裡的 AI 面板幾乎都來自你安裝的外掛、主機商塞進來的外掛,或是主機控制台的整合功能。在動手寫任何程式碼去移除一個核心可能根本沒有的東西之前,先去看你的外掛清單。

要怎麼關掉 Jetpack AI Assistant?

到 Jetpack 的設定畫面停用 AI Assistant 模組,不要去改程式碼。Jetpack 的架構本來就是各模組可以獨立開關,所以關掉那一個就能移除它的編輯器面板,其他 Jetpack 功能照常運作。如果你根本沒用到 Jetpack 的其他功能,直接停用整個外掛更單純也更輕量。

用 remove_action 可以關掉外掛的 AI 功能嗎?

有時候可以,但很脆弱。它只有在你確切知道外掛註冊時用的 hook、callback 和優先權時才有效,而外掛一次更新就可能改掉其中任何一項,讓功能悄悄跑回來。有設定選項時就用外掛自己的設定,把解除掛載當成最後手段,而且每次更新後都要重新測試。

在 robots.txt 阻擋 AI 爬蟲真的有用嗎?

只對願意遵守的爬蟲有用。包含 OpenAI、Anthropic、Google 和 Apple 在內的主要業者都公布了他們宣稱會遵守的 user-agent 代號,擋掉這些是值得做的。robots 規則不具強制力,所以惡意程式和使用者觸發的抓取還是可以無視它。伺服器層級的封鎖才是能強制執行的那一層。

阻擋 AI 爬蟲和阻擋 AI 搜尋有什麼不同?

有些業者會用不同的代號分別對應模型訓練和即時問答。擋掉訓練用的代號可以讓你的內容不進入模型訓練,但你在 AI 回答中仍然看得到;而擋掉搜尋或使用者代理的代號,則可能讓你從原本會引用並連結你的 AI 生成結果中消失。兩個都擋之前,先想清楚你要的是哪一種取捨。

llms.txt 是我該導入的標準嗎?

不是,llms.txt 是社群提案,不是通過的標準,也沒有任何主要 AI 業者承諾會把它當成存取控制機制來遵守。加上這個檔案無害又便宜,但別把它當成 robots.txt 指令或伺服器層級封鎖的替代品。這個領域的標準制定工作仍在進行中。