WordPress將其所有信息片段(包括文章、頁(yè)面、評(píng)論、博客鏈接、插件設(shè)置等)存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中。 雖然WordPress用戶可以通過(guò)網(wǎng)站后臺(tái)編輯控制以上信息片段。 在一定程度上。
不過(guò)假設(shè)你的WordPress網(wǎng)站上有成百上千篇文章,而你需要進(jìn)行全站范圍的改動(dòng), 這時(shí)從后臺(tái)逐條編輯就有點(diǎn)費(fèi)時(shí)費(fèi)力了,并且犯錯(cuò)的幾率也會(huì)提高。 最好的方法是進(jìn)入WordPress的MySQL數(shù)據(jù)庫(kù)執(zhí)行必要的查詢(改動(dòng))。 通過(guò)MySQL可以迅速地完成以上任務(wù),為你節(jié)省更多時(shí)間。
下面要介紹的就是一些省時(shí)省力的WordPress SQL查詢方法。
WordPress數(shù)據(jù)庫(kù)里存儲(chǔ)了你精心發(fā)表的每一篇文章,來(lái)自你的讀者的所有評(píng)論,以及你對(duì)自己網(wǎng)站進(jìn)行的所有個(gè)性化設(shè)置。 因此,無(wú)論你對(duì)自己有多自信,都請(qǐng)記住一定要事先備份WordPress數(shù)據(jù)庫(kù)。 你可以通過(guò)備份插件進(jìn)行備份。
這段代碼可以為WordPress數(shù)據(jù)庫(kù)內(nèi)所有文章和頁(yè)面添加一個(gè)自定義字段。 你需要做的就是把代碼中的‘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';
如果只需要為頁(yè)面添加自定義字段,可以使用下面這段代碼:
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';
當(dāng)你安裝或刪除插件時(shí),系統(tǒng)通過(guò)文章meta標(biāo)簽存儲(chǔ)數(shù)據(jù)。 插件被刪除后,數(shù)據(jù)依然會(huì)存留在post_meta表中,當(dāng)然這時(shí)你已經(jīng)不再需要這些數(shù)據(jù),完全可以刪除之。 記住在運(yùn)行查詢前把代碼里的‘YourMetaKey‘替換成你需要的相應(yīng)值。
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
如果你在WordPress數(shù)據(jù)庫(kù)里執(zhí)行查詢刪除舊文章,和之前刪除插件時(shí)的情況一樣,文章所屬標(biāo)簽會(huì)留在數(shù)據(jù)庫(kù)里,并且還會(huì)出現(xiàn)在標(biāo)簽列表/標(biāo)簽云里。 下面的查詢可以幫你找出無(wú)用的標(biāo)簽。
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;
執(zhí)行以下SQL命令:
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
這個(gè)SQL查詢會(huì)刪除你的網(wǎng)站上所有未審核評(píng)論,不影響已審核評(píng)論。
DELETE FROM wp_comments WHERE comment_approved = 0
指定comment_status的值為open、closed或registered_only。 此外還需要設(shè)置日期(修改代碼中的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。 此外還需要設(shè)置日期(修改代碼中的2010-01-01):
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
當(dāng)你發(fā)現(xiàn)很多垃圾評(píng)論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評(píng)論。%表示含有“%”符號(hào)內(nèi)字符串的所有URL都將被刪除。
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;