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標簽存儲數據。 插件被刪除后,數據依然會存留在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';
指定comment_status的值為open、closed或registered_only。
向所有用戶激活pingbacks/trackbacks:
UPDATE wp_posts SET ping_status = 'open';
向所有用戶禁用pingbacks/trackbacks:
UPDATE wp_posts SET ping_status = 'closed';
指定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';
當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有“%”符號內字符串的所有URL都將被刪除。
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;