首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

WordPress 實用 SQL 語句 8 選:批次刪除修訂版、垃圾留言、修改作者、重設密碼、換域名等

     編輯:MySQL 資料庫相關知識

前置準備:備份資料庫

phpMyAdmin → 選擇 WordPress 資料庫 → 「匯出」 → 勾選「gzipped」 → 「執行」下載 .sql.gz 備份檔。


1. 批次刪除文章修訂版

DELETE FROM wp_posts WHERE post_type = 'revision';

WordPress 2.6+ 預設啟用修訂版,長期積累會膨脹 wp_posts 表。


2. 批次刪除待審垃圾留言

DELETE FROM wp_comments WHERE comment_approved = '0';

⚠ 注意:會連同正常待審留言一併刪除。建議改用 Akismet 外掛自動攔截垃圾留言。


3. 批次修改文章作者(如從 admin 改為個人帳號)

-- 1. 查詢用戶 ID
SELECT ID, display_name FROM wp_users;
-- 假設新作者 ID=5,舊 admin ID=1

-- 2. 批次更新
UPDATE wp_posts SET post_author = 5 WHERE post_author = 1;

4. 手動重設管理員密碼(無法收信時)

UPDATE wp_users SET user_pass = MD5('NewStrongPassword') WHERE user_login = 'admin' LIMIT 1;

WordPress 密碼採用 MD5 雜湊(舊版),新版會自動升級為 PHPass/BCrypt,登入時自動轉換。


5. 更換網站域名(搬家必做)

-- 5.1 站點設定
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://oldsite.com', 'https://newsite.com')
WHERE option_name IN ('home', 'siteurl');

-- 5.2 文章 GUID(永久連結識別碼)
UPDATE wp_posts SET guid = REPLACE(guid, 'https://oldsite.com', 'https://newsite.com');

-- 5.3 文章內容中的舊域名
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://oldsite.com', 'https://newsite.com');

-- 5.4 文章自訂欄位(如舊域名圖片連結)
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'https://oldsite.com', 'https://newsite.com');

6. 顯示頁面 SQL 查詢次數與耗時(除錯用)

編輯主題 footer.php,在 </body> 前加入:

<?php if (current_user_can('manage_options')) : ?>
    <!-- 查詢統計: queries in  seconds -->
<?php endif; ?>

僅管理員可見,避免洩露效能資訊。


7. 匯入備份還原資料庫

phpMyAdmin → 選擇資料庫 → 「匯入」 → 選擇備份檔 → 「執行」。


8. 批次關閉/開啟文章評論

-- 關閉所有文章評論
UPDATE wp_posts SET comment_status = 'closed' WHERE post_type = 'post';

-- 開啟特定分類文章評論
UPDATE wp_posts p
JOIN wp_term_relationships tr ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
SET p.comment_status = 'open'
WHERE tt.taxonomy = 'category' AND tt.term_id = 5;  -- 分類 ID

安全執行守則

  1. 務必先備份,確認可還原才執行 UPDATE/DELETE
  2. 先用 SELECT 驗證影響範圍:SELECT * FROM wp_posts WHERE post_type = 'revision' LIMIT 10;
  3. 大量更新建議分批 LIMIT 1000 迴圈,避免長鎖表
  4. 執行後檢查前台功能正常
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved