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_postsWHERE 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 wtINNER 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';
刪除特定URL的評論
當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。 %表示含有「%」符號內字串的所有URL都將被刪除。
以下為引用的內容:
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
辨識並刪除「X」天前的文章
找出「X」天前的所有文章(注意把X替換成對應數值):
以下為引用的內容:
SELECT * FROM `wp_posts`
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
刪除「X」天前的所有文章:
以下為引用的內容:
DELETE FROM `wp_posts`
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
刪除不需要的短代碼
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢指令刪除所有不需要的短程式碼。 把「tweet」替換成對應短代碼名稱:
以下為引用的內容:
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
將文章轉為頁面
還是只要透過phpMyAdmin執行一個SQL查詢就可以搞定:
以下為引用的內容:
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'
將頁面轉換成文章:
以下為引用的內容:
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
更改所有文章上的作者屬性
首先透過下面的SQL指令檢索作者的ID:
以下為引用的內容:
SELECT ID, display_name FROM wp_users;
成功取得該作者的新舊ID後,插入以下指令,記住用新作者ID取代NEW_AUTHOR_ID,舊作者ID取代OLD_AUTHOR_ID。
以下為引用的內容:
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
批量刪除文章修訂歷史
文章修訂歷史保存可以很實用,也可以很困擾。 你可以手動刪除修訂歷史,也可以利用SQL查詢為自己節省時間。
以下為引用的內容:
DELETE FROM wp_posts WHERE post_type = "revision";
停用/啟用所有WordPress插件
啟動某個插件後發現無法登入WordPress管理面板了,試試看下面的查詢指令吧,它會立即停用所有插件,讓你重新登入。
以下為引用的內容:
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
更改WordPress網站的目標URL
把WordPress部落格(模板檔案、上傳內容&資料庫)從一台伺服器移到另一台伺服器後,接下來你需要告訴WordPress你的新部落格位址。
使用以下指令時,請注意將http://www.old-site.com換成你的原URL,http: //www.new-site.com換成新URL位址。
首先:
以下為引用的內容:
UPDATE wp_options
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
WHERE option_name = 'home' OR option_name = 'siteurl';
然後利用下面的命令更改wp_posts裡的URL:
以下為引用的內容:
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
最後,搜尋文章內容以確保新URL連結與原始連結沒有弄混:
以下為引用的內容:
UPDATE wp_posts
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
更改預設使用者名稱Admin
把其中的YourNewUsername替換成新使用者名稱。
以下為引用的內容:
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';
手動重設WordPress密碼
如果你是你的WordPress網站上的唯一作者,而且你沒有修改預設用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
以下為引用的內容:
UPDATE `wordpress`.`wp_users` SET `user_pass` = md5('PASSWORD')
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
搜尋並取代文章內容
OriginalText換成被取代內容,ReplacedText換成目標內容:
以下為引用的內容:
UPDATE wp_posts SET `post_content`
= REPLACE (`post_content`,
'OriginalText','ReplacedText');
更改圖片URL
下面的SQL指令可以幫你修改圖片路徑:
以下為引用的內容:
UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=”http://www.myoldurl.com',
'src=”http://www.mynewurl.com');
來源
WordPress啦編譯