請參考WordPress如何使用SQL語句批量操作(1)你是否遇到過如下幾種狀況: 博客更換域名,博客文章的內容也要跟著換 使用的圖片地址更換了 寫了很多文章,回過頭來想切換作者 想刪除某個可惡留言者的所有留言 想更改某個留言者所有留言的網站URL 想要禁用所有文章的pingback想要禁用所有文章的評論功能所有的這些,都涉及到一個關鍵詞:批量修改。如果在WordPress後臺,手動地去一個一個修改文章內容,相信會讓你很抓狂,對一些擁有上千篇文章的博客來說,幾乎是不可能完成任務。本文將教你如何使用SQL語句來操作你的資料庫,實現數據的批量修改。
4、批量修改文章評論者的網站URL:假設,你的博客有個非常忠實的讀者,給你的博客文章留下很多有用的評論,同時他的評論都填寫了留言者的網站URL,但是有一天他的博客域名換了,並請求你更新他留言中的網站URL,那你怎麼辦?手動一個一個幫他改,這不太現實。你可以使用以下SQL語句:UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'oldurl.com', 'newurl.com' )
5、禁用所有文章的pingback功能:開啟pingback功能,可以在別人引用你的文章連結的情況下,給你發送通知,但是該功能似乎對我們的文章沒多大幫助,那為何不把pingback給禁止了呢?在WordPress後臺 – 設置 – 討論,取消勾選「接收來自外部博客的引用通告(pingbacks 和 trackbacks)」,這樣以後的文章都不開啟pingback,但是該選項不會對之前的已發布的文章起作用,還是要用到SQL:UPDATE wp_posts SET ping_status = 'closed';
6、刪除所有文章的修訂版:在通常情況下,文章的修訂版對大多數人來說沒多大意義,而且修訂版的數量會隨著你修改文章的次數不斷增長,這會增加資料庫的查詢速度,這並不是什麼好事。網際網路上有很多教你如何禁止修訂版的文章,還有很多插件可以刪除文章修訂版,你可以自己搜索看看。這裡教你如何使用SQL語句,刪除所有已產生的文章修訂版數據: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';
7、刪除某個評論者的所有評論:如果你的博客想要封殺某人,並刪除其在你博客的所有留言,可以使用以下SQL語句。根據留言者的暱稱進行刪除,以下語句將刪除所有暱稱為 example 的評論:DELETE FROM wp_comments WHERE comment_author = 'example';
8、替換所有評論中的敏感詞彙:國內的網際網路監控力度表現出了不斷加強的趨勢,如果你的博客評論中出現了大量的敏感詞彙,很可能離被牆也不遠了。最好的做法是,替換相關的敏感詞彙,以保證你的博客安全,以下SQL語句將所有評論中的 fuck,替換成 **,替換內容根據你的需要來。UPDATE wp_comments SET comment_content = REPLACE( comment_content, 'fuck', '**' );
9、關閉文章評論功能有時候你的博客可能會因為某種原因,需要關閉文章的評論。在WordPress後臺 – 設置 – 討論,那裡取消勾選「允許人們發表新文章的評論」,以後發表的文章默認是關閉評論的。但是之前已經發表的文章,若想關閉評論需要你一篇一篇地去修改評論設置,這是一件比較痛苦的事情。以下SQL語句可以幫助你輕鬆地批量關閉文章評論:(1) 關閉所有舊文章的評論:通常情況下,一篇舊文章就很少會有人發表評論了,一般訪問舊文章的訪客大都來自搜尋引擎,這是好事,但是這部分訪客還會提出一些新問題,尤其是技術問題,但是可能文章中提到的技術細節你已經淡忘,這時候會讓你很難辦。最好的做法還是還是禁用舊文章的評論,以下SQL將禁止2009-01-01之前發表的所有文章的評論,你可以根據需要修改日期:UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';
(2) 關閉所有文章的評論:有時候很不幸,在不可抗力的威脅下,你不得不關閉所有文章的評論,可以使用以下SQL語句:UPDATE wp_posts SET comment_status = 'closed' WHERE post_status = 'publish';