WordPress 將其所有資訊片段 (包括文章、頁面、評論、部落格連結、
外掛設定等) 儲存在 MySQL 資料庫中。 雖然 WordPress 使用者可以透過網站後臺編輯控制以上資訊片段。 在一定程度上。

不過假設你的 WordPress 網站上有成百上千篇文章,而你需要進行全站範圍的改動,
這時從後臺逐條編輯就有點費時費力了,並且犯錯的機率也會提高。 最好的方法是進入 WordPress 的 MySQL 資料庫執行必要的查詢 (改動) 。
透過 MySQL 可以迅速地完成以上任務,為你節省更多時間。

下面要介紹的就是一些省時省力的 WordPress SQL 查詢方法。

事先備份

WordPress 資料庫裡儲存了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設定。
因此,無論你對自己有多自信,都請記住一定要事先備份 WordPress 資料庫。 你可以透過備份外掛進行備份。

為所有文章和頁面新增自定義欄位

這段程式碼可以為 WordPress 資料庫內所有文章和頁面新增一個自定義欄位。 你需要做的就是把程式碼中的 『UniversalCutomField『
換成你需要的文字,然後把 『MyValue『 改成需要的值。

INSERT INTO wp_postmeta  (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value FROM wp_posts
WHERE ID NOT IN (SELECT  post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField'); 

如果只需要為文章新增自定義欄位,可以使用下面這段程式碼:

INSERT INTO wp_postmeta  (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
`` AND post_type = 'post'; 

如果只需要為頁面新增自定義欄位,可以使用下面這段程式碼:

INSERT INTO wp_postmeta  (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
AND `post_type` = 'page';

刪除文章 meta 資料

當你安裝或刪除外掛時,系統透過文章 meta 標籤儲存資料。
外掛被刪除後,資料依然會存留在 post_meta 表中,當然這時你已經不再需要這些資料,完全可以刪除之。 記住在執行查詢前把程式碼裡的 『YourMetaKey『
換成你需要的相應值。

DELETE
FROM  wp_postmeta WHERE meta_key = 'YourMetaKey';

查詢無用標籤

如果你在 WordPress 資料庫裡執行查詢刪除舊文章,和之前刪除外掛時的情況一樣,文章所屬標籤會留在資料庫裡,並且還會出現在標籤列表/標籤
雲裡。 下面的查詢可以幫你找出無用的標籤。

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;

批次刪除垃圾評論

執行以下 SQL 命令:

DELETE
FROM  wp_comments WHERE wp_comments.comment_approved = 'spam';

批次刪除所有未稽核評論

這個 SQL 查詢會刪除你的網站上所有未稽核評論,不影響已稽核評論。

DELETE
FROM  wp_comments WHERE comment_approved = 0

禁止評論較早文章

指定 comment_status 的值為 open 、 closed 或
registered_only
。 此外還需要設定日期 (修改程式碼中的 2010-01-01):

UPDATE
wp_posts  SET comment_status = 'closed' WHERE post_date  <
'2010-01-01' AND post_status = 'publish';

停用/啟用 trackback 與 pingback

指定 comment_status 的值為 open 、 closed 或 registered_only

向所有使用者啟用 pingbacks/trackbacks:

UPDATE
wp_posts  SET ping_status = 'open';

向所有使用者停用 pingbacks/trackbacks:

UPDATE
wp_posts  SET ping_status = 'closed';

啟用/停用某一日期前的 Pingbacks & Trackbacks

指定 ping_status 的值為 open 、 closed 或 registered_only
此外還需要設定日期 (修改程式碼中的 2010-01-01):

UPDATE
wp_posts  SET ping_status = 'closed' WHERE post_date  < '2010-01-01'
AND post_status = 'publish';