在管理 WordPress 網站時,直接操作資料庫往往能解決後台無法處理的棘手問題。本文整理了 14 條高頻使用的 MySQL 查詢語句,涵蓋密碼重置、批量修改作者、清理修訂版本、垃圾評論處理等實戰場景,助你輕鬆駕馭資料庫維護工作。
當忘記管理員密碼,或網站遭攻擊導致密碼被惡意篡改時,可透過 MySQL 的 MD5() 函數直接更新密碼:
UPDATE `wp_users` SET `user_pass` = MD5('新密碼') WHERE `user_login` = 'admin' LIMIT 1;
提醒:執行前請確認資料表前綴(預設為 wp_),並備份資料庫。
若初期以 admin 發文,後來新增編輯帳號需歸屬歷史文章,只需知道新舊用戶 ID:
UPDATE wp_posts SET post_author = 新用戶ID WHERE post_author = 舊用戶ID;
修訂版本雖利於多人協作,但會嚴重膨脹資料庫。以下語句可連帶刪除 wp_term_relationships(分類/標籤關聯)與 wp_postmeta(自定義欄位)中的孤兒資料:
DELETE a, b, c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON a.ID = b.object_id
LEFT JOIN wp_postmeta c ON a.ID = c.post_id
WHERE a.post_type = 'revision';
未安裝 Akismet 等反垃圾外掛時,後台可能堆積大量待審評論。一條 SQL 即可全清:
DELETE FROM wp_comments WHERE comment_approved = '0';
建議:仍強烈推薦安裝 Akismet 或同類外掛,從源頭攔截垃圾評論。
標籤資料存於 wp_terms,若創建後未被引用(count = 0),可安全移除:
SELECT * FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id
WHERE wtt.taxonomy = 'post_tag' AND wtt.count = 0;
利用 REPLACE() 函數,適用於網址遷移、關鍵字批量修正等場景:
UPDATE 資料表名 SET 欄位名 = REPLACE(欄位名, '舊字串', '新字串');
DISTINCT 關鍵字確保每個信箱僅出現一次,方便後續行銷或通知:
SELECT DISTINCT comment_author_email FROM wp_comments;
當某外掛導致前後台全掛,無法進入後台操作時,清空 active_plugins 選項即可強制停用全部外掛:
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
因標籤與分類共用 wp_terms 表,不可直接清空。以下語句精準移除標籤及其關聯:
DELETE a, b, c
FROM 資料庫前綴_terms AS a
LEFT JOIN 資料庫前綴_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN 資料庫前綴_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'post_tag' AND c.count = 0;
外掛或自定義欄位產生的 postmeta 記錄,若對應文章已刪除,會成為垃圾資料:
SELECT * FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;
指定日期前發布的文章批量關閉評論,減少垃圾評論來源:
UPDATE wp_posts SET comment_status = 'closed'
WHERE post_date < '2009-01-01' AND post_status = 'publish';
網站換域名後,歷史評論中的舊網址可一次替換:
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'https://舊域名', 'https://新域名');
同理,可修正評論者留下的錯誤或舊信箱:
UPDATE wp_comments SET comment_author_email = REPLACE(comment_author_email, '舊信箱', '新信箱');
針對夾帶特定垃圾網址的評論進行精準清理:
DELETE FROM wp_comments WHERE comment_author_url LIKE '%wpbeginner%';
善用這 14 條 SQL,能大幅降低 WordPress 維護成本。操作前請務必完整備份資料庫,並在測試環境驗證無誤後再上線執行。