雖然通過 WordPress 強(qiáng)大的插件庫(kù),你幾乎可以干任何的事情,但是有時(shí)候需要快速修復(fù)一些特定的問題的時(shí)候,直接操作數(shù)據(jù)庫(kù)可能反而是方便的方法,所以這篇文章就給大家介紹 WordPress 數(shù)據(jù)庫(kù)維護(hù)時(shí)常用到 12 個(gè) SQL 語句。
*注:下面假設(shè) WordPress 數(shù)據(jù)庫(kù)的表的前綴都是默認(rèn)的“wp_”。
1. 直接在數(shù)據(jù)庫(kù)中修改密碼
密碼忘記了是經(jīng)常的事情,博客密碼忘記了進(jìn)不去,可以直接在數(shù)據(jù)庫(kù)里面修改:
上面采用了 MySQL 的 MD5() 函數(shù)講密碼轉(zhuǎn)成 MD5 Hash。
2. 將日志從一個(gè)作者轉(zhuǎn)移到另外一個(gè)
假如你的博客的某個(gè)作者離開了,或者你不想讓“admin”作為作者名,想把日志的作者從一個(gè)改到另外一個(gè):
*注:你需要知道兩個(gè)作者的 user id。
3. 刪除數(shù)據(jù)庫(kù)中日志修訂記錄和其相關(guān)的 post_meta 數(shù)據(jù)
特別是針對(duì)多人博客的時(shí)候,日志修訂功能很重要,但是日志修訂功能也在數(shù)據(jù)庫(kù)里面添加了很多的數(shù)據(jù),假設(shè)你的博客只有 100 篇日志,每篇日志有 10 個(gè)日志修訂,你的 posts 表中就會(huì)有超過 1000 條記錄,嚴(yán)重的數(shù)據(jù)冗余:
*注:上面的 SQL 將刪除數(shù)據(jù)庫(kù)中所有的日志修訂記錄和其相關(guān)的 meta 信息(自定義字段)。
當(dāng)然你還可以:徹底屏蔽日志修訂功能。
4. 批量刪除垃圾留言
如果你一段時(shí)間沒有管理你的博客,剛好出去休假,沒有辦法上網(wǎng),并且博客也沒有裝類似 Akismet 這類防垃圾留言插件,那么你回來的時(shí)候,你會(huì)發(fā)現(xiàn)博客后臺(tái)有成千上萬條垃圾留言需要你去審核。 這個(gè)時(shí)候,其實(shí)你只需要審核通過正常的留言,然后執(zhí)行下面這條 SQL:
5. 查找沒用的標(biāo)簽
你可能創(chuàng)建一些 WordPress 標(biāo)簽之后,就沒有再使用,你可以通過下面這條 SQL 找到它們,然后安全的刪除他們。
6. 查找和替換數(shù)據(jù)
對(duì)于熟悉 MySQL 數(shù)據(jù)庫(kù)的開發(fā)者來說,replace() 這個(gè) MySQL 函數(shù)都應(yīng)該很熟悉,它可以讓你指定一個(gè)字段,然后替換它里面的字符串,一旦執(zhí)行,所有這個(gè)字段里面的字符串都會(huì)被替換。對(duì)于 WordPress 博客來說,這個(gè) SQL 則非常實(shí)用,它可以讓你批量修改某些輸入錯(cuò)誤,或者某個(gè)郵件地址等等。
替換日志內(nèi)容中字符串:
UPDATE wp_posts SET post_content = replace( post_content, 'string_to_find', 'string_to_replace' ) ;將某個(gè)留言者地址替換下:
UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );留言者郵箱:
UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );還有一個(gè) WordPress 插件 Search & Replace 還提供一個(gè)后臺(tái)讓你更加容易進(jìn)行批量替換。
7. 獲取所有留言者的郵件地址
有時(shí)候你想做點(diǎn)不是那么好的事情,比如給所有留言者發(fā)下郵件,告訴他們你博客做了一些新的功能,或者寫了一個(gè)很不錯(cuò)的文章,那么你干壞事情之前,首先要獲取所有留言者的郵件地址:
*注:上面的 DISTINCT 讓你獲取的郵件地址是唯一的,即使這個(gè)用戶發(fā)過好幾次留言,也不怕。
不過群發(fā)郵件這件事情個(gè)人建議還是不要這樣做好。
8. 一次把所有插件都停了
網(wǎng)站出現(xiàn)問題了,需要一次把插件全部都先停了之后檢測(cè)下:
9. 刪除所有標(biāo)簽
有時(shí)候,你瘋了,想刪除博客所有的標(biāo)簽,這個(gè)時(shí)候你不能單純的清空 wp_terms 表,因?yàn)?wp_terms 表同時(shí)存了分類和標(biāo)簽的數(shù)據(jù),這樣你就把分類信息也刪除了,這樣你就真的瘋了。
*注:上面 SQL 除了刪除標(biāo)簽,還刪除了所有標(biāo)簽和標(biāo)簽和日志關(guān)聯(lián)的關(guān)系。
10. 列出沒用的 post meta
wp_postmeta 中的數(shù)據(jù)是由一些插件或者自定義字段生成的,他是對(duì) wp_posts 表的一種無限的擴(kuò)展,但是可能由于某種原因,日志被刪除了,但是它的 meta 信息還存在 wp_postmeta 表中,下面這條 SQL 將這些沒有關(guān)聯(lián)日志的 meta 數(shù)據(jù)列出:
11. 關(guān)閉舊日志留言功能
厄,對(duì)于一些技術(shù)博客或者其他博客來說,一些舊日志的內(nèi)容可能已經(jīng)過時(shí)了,但是一些讀者,還是對(duì)一些問題“糾纏不清”或者“喋喋不休”,怎么辦,把留言關(guān)了就好了:
關(guān)閉留言:
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';關(guān)閉Trackback:
UPDATE wp_posts SET ping_status="closed" WHERE post_date < '2009-01-01' AND post_status = 'publish';12. 刪除所有 url 含有特定字符串的留言
一些留言者很煩,一次留幾十個(gè),其鏈接都指定到一些賣偉哥,起重機(jī),SEO 的站點(diǎn),煩人的很,一個(gè)一個(gè)刪,又累,下面這條 SQL 可以來幫忙:
簡(jiǎn)單總結(jié)
這些 SQL 語句是直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的,如果你不是那么懂?dāng)?shù)據(jù)庫(kù)或者 SQL 語言,建議你不要這么做,如果你還是比較自信 SQL 操作,建議操作之前備份下數(shù)據(jù)庫(kù)。
你在維護(hù) WordPress 有什么常用的 SQL ,歡迎留言補(bǔ)充。