WordPress 從 5.6 版本起內建「應用程式密碼(Application Password)」功能,讓你能夠安全地授權外部程式透過 REST API 存取你的 WordPress 網站,而不需要直接暴露主帳號密碼。不論你是要用 Python 自動發文、串接 Zapier、還是自己開發 CLI 工具,都需要掌握這套認證流程。
什麼是 WordPress REST API 應用程式密碼?
應用程式密碼是一組獨立的 24 碼隨機密碼,專門用於 REST API 的 Basic Authentication 認證。它與你的主帳號密碼完全分開,具備以下特點:
- 只能用於 API 認證,無法用來登入後台
- 可以為不同應用各自產生獨立密碼
- 隨時可以撤銷單一應用的存取權限
- 系統會記錄每組密碼的最後使用時間與 IP
如何產生 WordPress 應用程式密碼?
產生應用程式密碼的步驟非常簡單,只需要在 WordPress 後台操作即可:
- 登入 WordPress 後台,點選左側選單「使用者」→「個人資料」
- 滾動到頁面最底部,找到「應用程式密碼」區塊
- 在輸入框填入此密碼的用途名稱,例如:orca-
wp-cli-tool、Zapier 串接 - 點擊「新增應用程式密碼」按鈕
- 系統會產生一組格式如
AbCd EfGh 1234 IjKl MnOp 5678的密碼,請立即複製保存,之後無法再次顯示

⚠️ 注意:如果你的 WordPress 是在本機環境(沒有 HTTPS),預設不會顯示應用程式密碼區塊。可以在 wp-config.php 加入以下設定來強制啟用:
define( 'WP_ENVIRONMENT_TYPE', 'local' );
WordPress REST API Basic Authentication 認證原理
應用程式密碼使用 HTTP Basic Authentication 標準。每次 API 請求時,需要在 Header 中帶上 Base64 編碼的認證資訊:
Authorization: Basic base64(使用者名稱:應用程式密碼)
其中應用程式密碼中的空格可以保留,也可以去除,WordPress 都能正確辨識。
實際使用範例
Python(httpx / requests)
Python 最方便的方式是直接使用 auth 參數,不需要手動處理 Base64:
import httpx
WP_URL = "https://your-site.com/wp-json/wp/v2"
USERNAME = "your_username"
APP_PASSWORD = "AbCd EfGh 1234 IjKl MnOp 5678"
# 列出文章
with httpx.Client(auth=(USERNAME, APP_PASSWORD)) as client:
resp = client.get(f"{WP_URL}/posts")
print(resp.json())
# 新增文章
with httpx.Client(auth=(USERNAME, APP_PASSWORD)) as client:
resp = client.post(f"{WP_URL}/posts", json={
"title": "測試文章",
"content": "文章內文",
"status": "draft"
})
print(resp.json())
cURL 指令
# 取得文章列表
curl -X GET "https://your-site.com/wp-json/wp/v2/posts" \
-u "your_username:AbCd EfGh 1234 IjKl MnOp 5678"
# 新增文章
curl -X POST "https://your-site.com/wp-json/wp/v2/posts" \
-u "your_username:AbCd EfGh 1234 IjKl MnOp 5678" \
-H "Content-Type: application/json" \
-d '{"title":"測試標題","content":"內文","status":"draft"}'
JavaScript(Fetch API)
const username = 'your_username';
const appPassword = 'AbCd EfGh 1234 IjKl MnOp 5678';
const token = btoa(`${username}:${appPassword}`);
fetch('https://your-site.com/wp-json/wp/v2/posts', {
headers: {
'Authorization': `Basic ${token}`
}
})
.then(res => res.json())
.then(data => console.log(data));
常見錯誤排除
| 錯誤訊息 | 原因 | 解決方式 |
|---|---|---|
| 401 Unauthorized | 帳號密碼錯誤 | 確認使用者名稱(非 Email)與密碼是否正確 |
| 應用程式密碼區塊不顯示 | 非 HTTPS 環境 | 在 wp-config.php 加入 WP_ENVIRONMENT_TYPE 設定 |
| 403 Forbidden | 使用者權限不足 | 確認該帳號有足夠的 WordPress 角色權限 |
| 密碼正確但仍然失敗 | 安全外掛阻擋 | 檢查 Wordfence 或類似外掛的設定 |
安全使用建議
- 每個應用程式使用獨立的應用程式密碼,方便個別撤銷
- 不要將密碼直接寫在程式碼中,改用
.env檔案或設定檔管理,並加入.gitignore - 定期檢查已授權的應用程式密碼列表,移除不再使用的項目
- 務必在 HTTPS 環境下使用,避免密碼在傳輸過程中被截取
- 結合 WordPress 使用者角色管理,給予 API 帳號最低必要權限
進階應用:用 Python CLI 工具管理 WordPress
掌握了應用程式密碼的使用方式後,你就可以進一步建立自己的 WordPress 自動化工具。透過 Python + httpx 打造 CLI 工具,讓你直接在終端機完成文章發佈、分類管理等日常操作,大幅提升工作效率。
應用程式密碼的設計讓這類自動化工具的安全性大幅提升——即使工具的設定檔外洩,攻擊者也無法使用該密碼登入你的 WordPress 後台,而你只需要在後台撤銷那組密碼即可,完全不影響主帳號的安全。
常見問題 FAQ
WordPress 應用程式密碼和一般登入密碼有什麼不同?
應用程式密碼只能用於 REST API 的 HTTP 認證,無法用來登入 WordPress 後台。即使應用程式密碼外洩,攻擊者也無法透過它登入你的網站,只需在後台撤銷該組密碼即可,不影響主帳號安全。
應用程式密碼產生後忘記複製怎麼辦?
應用程式密碼只會在產生當下顯示一次,之後無法再查看。若忘記複製,只能刪除該組密碼並重新產生一組新的,同時更新使用該密碼的所有應用程式設定。
一個帳號可以建立幾組應用程式密碼?
WordPress 對應用程式密碼的數量沒有限制。建議為每個應用程式或工具各自建立獨立的密碼,並以用途命名(例如 CLI 工具、Zapier 串接),方便管理與個別撤銷。
為什麼我的 WordPress 後台沒有顯示應用程式密碼選項?
常見原因有兩個:一是網站在非 HTTPS 環境(本機開發),可在 wp-config.php 加入 define('WP_ENVIRONMENT_TYPE', 'local'); 強制啟用;二是安全外掛(如 Wordfence)可能將此功能停用,請檢查外掛設定。
應用程式密碼適合用在哪些場景?
適合用於伺服器對伺服器的自動化整合,例如:Python 或 Node.js 自動發文工具、CLI 管理工具、n8n / Zapier / Make.com 流程自動化、行動 App 或外部網站與 WordPress 的資料串接。若是公開給第三方使用的應用,建議改用 OAuth 2.0 進行更安全的授權流程。