WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
+ C+ q6 @* g3 O$ X
$ J0 v/ `% j ?3 @8 o- u2 I 不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
# w( Y# v1 _3 C0 L4 ~' h" R Y4 E) o0 V8 g; Q0 j1 k
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。7 h/ ^, M' R _8 ~0 M6 T) V
1 w+ H* Z/ r3 ^' W, {$ f' [
事先備份
( U5 |& W% y$ U0 y* a0 S& E* [. H) M& f. p
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。& F3 g* P! v. W, |9 T8 {) y8 @
1 X( p* X" f# i 為所有文章和頁面添加自定義字段
, e- p6 W: }9 P. e! R7 Q. @7 ]1 Y! K7 I5 r( J
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
' |1 K8 }$ P* A" n* v3 U8 { }5 T! ~) f+ r" {
以下為引用的內容:
3 I* A, u- m, I5 w) R
j2 x5 f+ a4 f0 e$ p' V* F: yINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
0 U, }% L$ N/ R! OSELECT ID AS post_id, 'UniversalCustomField'( S# C' K d2 K
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
a' @1 Q2 ]! T3 l# b
& g! e1 b' ^% t1 ]. R- A. `; p8 u- R7 y% H( {/ z, E
如果只需要為文章添加自定義字段,可以使用下面這段代碼:5 ^3 C) D* q/ X% s2 I+ B
- X. ]' C) i! q# B {
以下為引用的內容:0 c- z; M8 f6 V8 I$ N+ A3 x" Y
1 F7 b8 H6 B( k* z$ [; QINSERT INTO wp_postmeta (post_id, meta_key, meta_value)/ o& W( v5 J5 W* N2 B
SELECT ID AS post_id, 'UniversalCustomField'
: n0 ^* q! A/ h' m% V7 {( zAS meta_key 'MyValue AS meta_value
7 a4 e1 ~7 l0 Q: }* N3 xFROM wp_posts WHERE ID NOT IN
5 Y5 X% B8 Z, W# G, L(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post'; 0 y: _; ~* m) C
" h# s$ V5 s+ }7 c5 G0 _! C0 u
6 F% V0 R7 v6 Z 如果只需要為頁面添加自定義字段,可以使用下面這段代碼:) ~: w& ?) r9 X2 X9 ]
% }6 E% F; d4 O8 N% h4 S' z- \
以下為引用的內容:
2 U0 H U e/ v2 O# B7 n6 U4 i" l0 L# j* w) b( T! f; [6 `
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)5 J: G6 n4 [0 X/ M, ]
SELECT ID AS post_id, 'UniversalCustomField'
. I+ F" Z: ]' {9 \AS meta_key 'MyValue AS meta_value
, M& |; M+ Y- h" e7 ?' I9 u4 |+ f vFROM wp_posts WHERE ID NOT IN+ W3 G4 g2 p& a1 {
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';3 p3 }2 O% p* v
/ ^4 R. s- ^; `7 E; F7 g5 M
8 B' o \ t- x2 ]
, i/ _3 U; I8 H0 M$ o$ c1 C 刪除文章meta數據' a2 r; s7 h6 e5 }; P/ c7 ]
: N1 r' X) Q$ J3 F Q6 h
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。% @! s5 z3 T- L3 R
9 Z0 m# D7 H: I0 p以下為引用的內容:
\/ ?5 E K3 u5 w+ H, XDELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
) U2 ?- X3 F! N1 h! w$ G' ^* k
+ a+ c" I9 v! D2 y; H* j: m
3 {/ F+ R- V# z9 p: x% a( v 查找無用標籤- u/ u( E; z0 g& e0 j8 B
7 t: U, H. a7 Q8 a4 V/ j
如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。
; |6 O* E4 }2 b9 T0 e1 s' t9 h$ W) [! g" y0 l
以下為引用的內容:
+ Q; ?1 `" W. L
8 p+ x! C6 A! u3 C* u7 ^ D7 u \; QSELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
7 ]2 z/ K& x; p3 G1 KWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
. q+ Z. n) M/ b1 _: A6 Q( t
% p6 m/ v( {- Z! J9 C- {" L9 {; B/ s3 }
批量刪除垃圾評論3 `" G5 T+ u& W0 _
" u! Y% a) {8 V2 }9 w/ w& P
執行以下SQL命令:6 c+ W" _$ r3 t
, P% v" h1 e& c; d5 n4 l0 Q以下為引用的內容:- {7 Q4 {9 e! F0 a/ r# W7 [
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
& s3 d2 Q6 E' A2 D* P7 r. B
7 S) C3 v' g# v% { ~% F; x
/ x0 Y& g- {7 x" t& P. b) b( [5 ]! L* ~1 q6 v8 F/ y, b
批量刪除所有未審核評論
0 }1 W3 }8 I0 B: @5 b" p( F: j1 b! e1 i
這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。' Z6 y; G) y9 J
" U% R+ M3 R5 y1 L7 t V* \* F以下為引用的內容:
+ |0 b/ I0 U0 y2 W/ k- ] ^; aDELETE FROM wp_comments WHERE comment_approved = 0
* N& k ^8 }9 Y5 y2 C3 {
$ D. K/ V# D3 ]# X
) @( Q9 z w+ t( o5 u, j 禁止評論較早文章. C2 _ W8 S$ e" P$ J& q+ [+ r
# K6 ?. ^ v6 N: n8 n. e/ p 指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):) {; c6 h6 R; o& }" B
; \! K- t/ U- |# t' G3 L# r3 |以下為引用的內容:
. i7 S" W8 \1 ?8 Y: [& S2 m/ AUPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; 0 o8 G5 v0 k! ^; B4 U+ k: X
8 S0 Q; C0 D% g- A! }5 G9 ?$ _' `/ R# y& ]# z4 l
停用/激活trackback與pingback
r7 X1 g, [; f' O" y& p
# v1 e# \0 f' O1 s% [9 b+ T! z% g 指定comment_status的值為open、closed或registered_only。2 A( y$ @5 T: s0 e' M- y) A/ }
, C- Q$ s. x" |7 l$ U+ u 向所有用戶激活pingbacks/trackbacks:8 p \, {2 L" R& f P
3 w x; Z* H2 W! l; F
以下為引用的內容:
+ N4 d$ h: L) X1 O$ [6 XUPDATE wp_posts SET ping_status = 'open'; - c( S+ Q% ^( X4 Q) V
3 V( n, k( ~* k8 d
" p! S7 U4 h) g/ C' A2 B! \
向所有用戶禁用pingbacks/trackbacks:7 `1 }' s0 z9 T; @ }$ L& R% R
# }- N% \ b. L6 O以下為引用的內容:
$ b2 N. B2 |! G- SUPDATE wp_posts SET ping_status = 'closed'; 7 G$ ^$ Y( f7 R7 }
' U2 Z% n# `4 y! c9 l g2 m* [
7 c) H9 \$ D6 Z8 v( W* A; L. x: A
激活/停用某一日期前的Pingbacks & Trackbacks" c( `) H) \7 i# K* x/ }
9 H$ y- a; E+ J3 n$ O' q 指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):4 ], O" j! ] G3 v4 [! A
4 Z1 e& r- T5 J5 H" L
以下為引用的內容:) R& u; Q% z" {$ \& C: \' o. [, d
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
+ q4 t$ c/ _* I, G" _+ ]; a
' X# v, B f, z- [6 l6 s- Z
- q7 D# N8 }3 b/ |- A4 c5 b1 z4 p 刪除特定URL的評論
* L; {8 \1 H/ M
2 U* e: U5 x5 I" ^/ U* z1 H 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
9 m) @2 I% s" `4 Y$ c( |7 Y8 ]6 p9 O; h& E0 J
以下為引用的內容:/ Q8 s! @: @2 {: V/ H/ M, F2 T
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
4 k7 M, T6 W0 M3 ~! C% a6 r1 b
( V+ u/ f# s: j9 M; D- n. b
5 {. W5 u4 e4 U 識別並刪除「X」天前的文章7 l8 G/ L. t7 R4 z/ ?" e3 M
( v. E. r/ t- ~7 c# U 查找「X」天前的所有文章(注意把X替換成相應數值):
* W( y% J+ C7 f# q# h1 y! Z0 X$ ~. O5 `
以下為引用的內容:
$ U' r- ~# j% g* T4 d9 w5 H t" a W4 l% A
SELECT * FROM `wp_posts`
, K0 d$ S/ P% R" kWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X n3 D+ r$ N h. A: T, G
" r! Y3 E; z: j/ F
% W! `" l7 t4 T, D7 H1 ?+ t
刪除「X」天前的所有文章:, O t$ E' _4 ~2 e i/ b' Q
) ]0 a- @- g/ ~4 s
以下為引用的內容:
* F3 m/ E+ J, Y f2 Q$ Y i F2 S, j) r% c
DELETE FROM `wp_posts`
4 J9 S1 F6 {+ p" h- HWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
8 M0 ~* M% B% B( R9 Y
3 h) l- H) l/ F
) N9 K) c7 x* y$ X5 ^% c4 d2 u9 o$ Z: J" \
刪除不需要的短代碼9 m `( e3 I# p( s; ` {5 q9 _) K1 F
5 I& r o5 n- G: Y 當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
% F3 E5 ~# v5 {4 a; I# A: Y/ F3 H8 p ~( F7 `
以下為引用的內容:3 Q( [' G$ P5 ^+ P6 h0 S
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
. z: ^4 n* K$ ?! ?: ]7 }3 V/ w" O: D6 t
# G" N+ f; n0 o
將文章轉為頁面1 r0 Q& N1 B- ?9 Z b ^; a# K
$ z! E; ^" l3 G# K( w4 p 依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
7 I( Q6 o' k8 l- @' w% [2 F6 l: M% F! }
以下為引用的內容:
, c l( I: Z3 z( k `UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'
) M, V$ S7 O7 {, v6 l+ K; C0 e) ]5 R# M* E
1 Z0 w7 M/ U C' S+ W8 R1 F
將頁面轉換成文章:- k" d0 w$ V* t# H
8 d1 l; }. p# A- G) J# s
以下為引用的內容:
; s _! z h/ `/ z6 D; wUPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
! E$ n; ]. t: N* T( _+ F( u$ E, K9 R+ T6 i9 ]- ]% b% ~
; J' p9 M; Z8 e" Z* U 更改所有文章上的作者屬性
/ ]8 t, @! l" d7 t" z3 d/ C- B5 o3 e8 v. G I5 b
首先通過下面的SQL命令檢索作者的ID:
9 x J% c3 @# n& I3 Z
- m3 R5 P1 z/ F6 ^以下為引用的內容:9 M$ v8 C# m+ }) m: m( Z3 v9 a
SELECT ID, display_name FROM wp_users; 8 |8 S+ ^5 Q1 t6 g9 R2 {/ l6 z
, @ d5 P0 r% O! v) i3 G
: I. U4 A4 u& ]3 i1 U9 u. M" ?
成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。" W& U: x7 d% r O$ x' G# r7 j
, x0 s7 R- A. H( d( _3 P6 C, v
以下為引用的內容:6 @1 g' j* R$ J0 ]6 B5 |& C! T1 X$ j
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID; ! O7 c: U$ V, q, T5 {( a
( n( w( [1 b5 S
# M0 U5 o% ^* @" r, p, P; h 批量刪除文章修訂歷史
" a" L$ F I9 U/ V
$ H0 ? ]" x% r, Z. C% t 文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。7 v, K8 J t" ]3 r D; O4 f3 b
3 G9 z }4 I8 o1 O1 ?0 i以下為引用的內容:
s q) L+ s) s* IDELETE FROM wp_posts WHERE post_type = "revision";
- |9 Z1 G( v! W( n# z& b1 k4 }, q6 R0 E8 B7 k& v
/ b, V- ?" h7 O W8 n1 L1 n$ D 停用/激活所有WordPress插件4 {, o6 u% v* S: t9 I4 |
! a8 y2 Y; R* L+ f' [" Q/ } | 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
! L, h( [; S3 F' B& m3 k2 k- w
2 p6 { X3 D5 \5 u8 e以下為引用的內容:2 V) I) x# g/ P* _
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
- l; M. w9 `5 s5 s( D
) v( H9 X( u3 f, X- w& w( N0 H( S
( ^9 N+ ^, W; b' d# N1 @ 更改WordPress網站的目標URL
4 m! {1 P ?) M: q4 s
9 x. o+ U9 W4 G0 f3 o 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
0 n j& w2 v% m5 }% ]" B8 h2 r, c+ { k" Z
使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。
& ?) @& c9 J0 D$ U: K$ h/ u
, T4 k8 t6 c+ D7 T# A; C6 T 首先:# r% J& U* O4 X: z, {3 N$ ?0 {' \
3 a6 ~: e& l: \9 t5 J
以下為引用的內容:
- U3 {9 A6 a4 }1 rUPDATE wp_options , V, C& X% n/ R7 Z, v
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') 9 N. Q* f, c ?" T7 z' M6 q* i7 b
WHERE option_name = 'home' OR option_name = 'siteurl';
! T0 Y6 ~2 T& f6 e8 I! u9 n; l" _$ C2 i% v5 x
9 \0 b6 u4 F7 B$ X! [
然後利用下面的命令更改wp_posts裡的URL:
2 {: A+ Y8 y# O+ Y
+ c& b- _5 O7 @: L2 S以下為引用的內容:8 [* M+ [4 E* ]. O, m
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com); 7 ]2 W8 }$ O1 K1 H( o1 E* [
$ P9 w& E8 ?% |4 }1 O
|/ J3 h6 h( f+ a o 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混: Z! _( n8 \5 p8 r8 v6 G3 o7 {) h
) i3 Y! J) {1 s8 o以下為引用的內容:+ x8 t0 g( u, ]6 c5 x9 n) w; I. S
UPDATE wp_posts W- z* G* n6 r
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
w; y: |' n, p c- s& f: c! T$ `% D
% j/ q# G) J1 ]; n1 B/ q6 l0 s5 A
1 f. z% s. a- t- \) W1 K9 [9 ?: ~ 更改默認用戶名Admin
4 O0 o i0 }" x% q, o- I
, j. m2 ^) k1 j7 j( \ 把其中的YourNewUsername替換成新用戶名。
0 d' q W. J, A3 x# y @3 `( Z/ v/ G& U
以下為引用的內容:
+ g8 N9 U; v$ A4 @# dUPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';
. h/ A' S* Y% S. C+ B5 [) @7 ?% ]' {8 z) a/ d x
$ V* c. m: A! \: _! x, b 手動重置WordPress密碼
9 t S" A3 A9 Y2 s6 Q+ o
/ x7 o% g1 z, A( B, ~: f 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
5 a2 b" ?' J k3 `! \4 Q" L/ ?& z6 V3 ?" L k1 `) z
以下為引用的內容:, e4 _0 K. b2 Z; E2 z$ N
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD')
* x+ |6 Y+ W1 m4 g' B+ HWHERE `wp_users`.`user_login` =`admin` LIMIT 1;
1 Y E( A, Z& c c! p! [* c1 N9 u! u% E8 _
7 \% w. k) ]) b1 r7 a
搜索並替換文章內容 p( d" U" q$ p
& |$ i; B i" @& ~: N7 g
OriginalText換成被替換內容,ReplacedText換成目標內容:& s) v6 d- N G; V& Q
- a0 L. r+ d3 r+ F0 j以下為引用的內容:/ A% I$ Z1 y. l/ G
! B2 w f0 I. B9 X3 {UPDATE wp_posts SET `post_content`6 i% N: O6 X. x6 g8 J/ {9 d7 p
= REPLACE (`post_content`,
+ I( ]4 ~' V7 g2 b8 W0 I'OriginalText','ReplacedText');; s1 n! l$ O9 a5 q- Q: A
9 [( @: v& z1 B& d5 \1 P. ]1 @" e8 S1 X; u8 K" w6 x4 z. ^
5 `2 z4 s4 n) |% D 更改圖片URL
( j( M* B6 C0 T8 n
" P* T! i d0 m* h 下面的SQL命令可以幫你修改圖片路徑:! P$ P8 A# B1 {
- c* [. R L) y* A
以下為引用的內容:
1 P$ b. }$ `8 r& B C9 D" o7 g
& G: Z/ x5 X4 M; S3 n: A0 J( UUPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com', v% ?/ m p7 f3 W8 ?. w
'src=」http://www.mynewurl.com'); |
|