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';