WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
8 D. H7 y0 c/ |7 }! I9 F# w, _- R: C. W8 v6 `: p2 q5 E8 l9 t
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。( G# H- I* @( `1 K1 S* H c
" K( F7 ^5 }$ T; R 下面要介紹的就是一些省時省力的WordPress SQL查詢方法。& ~1 _2 r& E8 F o, \! c
: b+ q/ y0 P/ A, x+ J. L& c 事先備份
1 |, E. q; |. k# O6 J0 E; X. B
, m* e$ o" H% k/ A! j0 W" f WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。' {+ q0 ]! T2 O" T: M- ?
- Y* H, M- M9 u) d# Y. ~% r 為所有文章和頁面添加自定義字段+ Y# Z* E* y0 l+ n
d3 |& H: T, I. R0 Q; m3 `
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
, u7 d; l% w7 V5 i4 q
3 @* n6 a; `* O6 _4 r以下為引用的內容:
4 b# N: r- K# u1 w2 X- U
' ~, V! x9 z/ j$ ~2 ?! N1 JINSERT INTO wp_postmeta (post_id, meta_key, meta_value)3 P& N- ~% O# w! t
SELECT ID AS post_id, 'UniversalCustomField'& q1 a9 M0 x& n& v# }+ r
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField'); ) L' N& D8 y: M
" J) S) X+ ?7 `, V/ u
' N# m1 }( b$ t7 `. c" Q6 } u7 I
如果只需要為文章添加自定義字段,可以使用下面這段代碼:
6 F. ]* {; c. q- `; t
8 s1 Y! }$ }) w$ s, y以下為引用的內容:
) w X+ `+ l' A9 K% \" o8 M* Q: j' [ j1 H8 h
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)* |% w/ @6 {8 J& v3 L5 D
SELECT ID AS post_id, 'UniversalCustomField'
8 o; m; F' F& H' T+ ?AS meta_key 'MyValue AS meta_value
8 Q( W$ G& P( u* F* RFROM wp_posts WHERE ID NOT IN
4 z& ~9 j Y! E2 Z5 w/ d(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post'; 6 X5 k- |5 \% u
9 i9 @$ r& i7 x1 S0 I/ I
' Y( u; X! J3 x; L$ g, g% {" \
如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
/ Q! v$ d( U7 V& }9 P" {, p' N& U+ |+ s; v/ \5 }
以下為引用的內容:8 h8 T9 Y! D$ ]9 J
" C% v2 t5 j# j, O
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
$ R7 L- e7 M+ |( I- }( o/ w! X0 ~SELECT ID AS post_id, 'UniversalCustomField'
# v2 w5 A( }5 C3 y: ?3 s$ YAS meta_key 'MyValue AS meta_value
2 W; X5 \3 Q+ d9 f9 J: ?# ~5 f) [7 `FROM wp_posts WHERE ID NOT IN
5 X2 ~; m) R3 v/ T- r. f$ M. q(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';! x: [ v* _: q8 M0 D
; r2 @" k; G2 w+ G
! C# G. ?3 G9 r. h8 Y( Z6 G! U9 d( C3 {8 d- I
刪除文章meta數據
; T' R! q. t: o. ^# y6 h1 c/ }1 \: ]) S
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。" [. G/ t' p/ N
+ J- h" J7 ~, v7 `
以下為引用的內容:. i9 ~0 b0 r" z ~
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey'; 3 ~ h T" \$ v
; U2 L# H3 o9 z7 d' V
. o' r; \6 [1 c5 x9 G: Q. L, a 查找無用標籤
9 ~6 j# h; I. I4 e" q- M% M0 `9 |
4 P, I4 q/ J4 b6 K: V& b 如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。
2 Q% F* W; K; `2 k9 @+ |
! O1 @& @" V* O以下為引用的內容:
7 D# @. [! @% L2 c. O) @+ e: Z
% V5 G, j! Q* d4 M/ R4 CSELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
& f% G" C1 |8 w, dWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
" K% d1 n- h; d+ M1 q4 u6 W M* F- P% U) ^. Q$ E! X: ^
3 }9 R+ A5 v. |6 X
批量刪除垃圾評論/ i. O/ U" H2 s$ D) N* J: v
7 A' h# L: g2 ^1 \# h2 m" ?( L/ x 執行以下SQL命令:
7 p2 d" y7 y( j: d% {2 G7 q5 ~# K3 G+ N. k" x: T) P/ @8 ^8 m
以下為引用的內容:
5 E- r- _, I) U5 C& mDELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
{: t. d3 d( ?" @# r' o( N2 e+ U' u' r. ^- ]: ~! v7 P
9 P6 J p- L3 _( d _
8 k1 l8 w2 _1 a2 V$ l* e; E3 Z; ]! t
批量刪除所有未審核評論! `3 ^1 V0 ?/ u8 h" X& @. \. P+ t& ]
V: ~4 w, c5 F9 x2 B/ T9 n: B 這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。
5 M# n3 ~/ Y% |# s2 {3 d! Q2 e' @! o* b9 V* H7 b3 j
以下為引用的內容: ]8 z8 L0 D9 e, H+ f1 s r
DELETE FROM wp_comments WHERE comment_approved = 0
~ b2 G0 t' {% M9 [ n5 O" e& e5 ~+ q4 P
6 Z/ C) F) H8 B# u
禁止評論較早文章
: {3 ?. c0 u0 F/ u' ?( D" P
* ]! A8 U5 A/ P8 l" z 指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):( z+ `1 _1 | M* N1 a
% E+ _7 b4 I q# E- F
以下為引用的內容:! L, h8 u( j/ O$ M: M
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; " D9 i8 L# j! Y
2 I: ]* n h ^' L
& u+ k. o" Z/ |) D* f
停用/激活trackback與pingback
$ b5 x0 y0 _+ n! X5 ~, ^4 R5 K- G" H; H: z
指定comment_status的值為open、closed或registered_only。
# X- f) ?* G7 \& d2 ]; Z* U9 _6 k* Q) q
向所有用戶激活pingbacks/trackbacks:* e* P" L4 E) B/ f6 ~0 N
3 V( z# ^% T1 J' B以下為引用的內容:9 @" z! k% f% Z( Z# m6 @8 t7 Q, U
UPDATE wp_posts SET ping_status = 'open';
9 l- h9 L% ?' U1 `1 l/ ^) f1 K
: R; E/ _2 n: R/ x" X n% H- q# J7 w. j3 v$ C1 O1 c
向所有用戶禁用pingbacks/trackbacks:
- S, Z/ Q, B' G2 H4 U. l: E3 B0 B R" ~
以下為引用的內容:
& C& V- {0 R( v4 F& o+ ?5 U5 IUPDATE wp_posts SET ping_status = 'closed'; ! }: H. E1 i) H+ U
' _* |$ [- l( D' v9 b
9 B8 d# x0 X2 e& D" G
激活/停用某一日期前的Pingbacks & Trackbacks
$ u! w' b& S! D, w
& H2 W1 @8 s0 f: c 指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):7 }% g$ f2 Q7 {- J4 z; s+ @
/ V+ K$ R, I! c% u4 G [以下為引用的內容:& f5 n: L, Y8 y! K1 {
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; $ S7 I4 d2 H4 `* r, g- p
* e) s/ d$ ~0 H. W
* J# ~. ~5 t1 G' Z9 S3 J+ `" w, ]" }
刪除特定URL的評論5 p3 L% x! q/ u) Y3 j- W
6 _% K; v/ b, N7 @6 u 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
9 r: ?0 k1 O8 Y7 A3 B
3 z( j4 q# O6 o* z! O以下為引用的內容:! K( P/ S" ~. z: q5 _
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
0 b7 f+ `: S+ g8 e: n( z( ?8 W+ [7 `; v, Z& X5 I3 ^
|& d1 ]& f4 V/ Q8 I
識別並刪除「X」天前的文章
4 N% D% ?. g/ D5 n$ y/ g9 J+ W& s/ N& I( a
查找「X」天前的所有文章(注意把X替換成相應數值):
{" O/ p6 |. B/ H* R! U
' N- w& @' L, B以下為引用的內容:+ [6 R' ]0 S1 h; q; `
$ ?3 u4 |6 m4 Q: F0 ]SELECT * FROM `wp_posts`. g* G# K/ W6 r6 j: X; _
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X ! P% d) d! x+ F% b% I+ |) l
+ b3 {" P; H8 f4 _5 c8 N/ m! s; O/ n$ Z% ~
刪除「X」天前的所有文章:
& r( L1 c) Z8 v4 Z
( x$ {8 y+ \ z7 I0 G3 D7 h以下為引用的內容:9 i0 y6 X B. O5 T( a: N5 c% b1 d) A
: X1 T& T( i# [5 w# R$ l' h5 ?5 i
DELETE FROM `wp_posts`, r3 D( ?; r7 B1 C% Q6 l
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X- T$ `$ t6 ^' ]6 e
& Y2 ?- \+ i u/ k% L# Q
! z2 A. f. h& A9 N2 k$ p
: W! `) Y$ c- {# g 刪除不需要的短代碼
$ N" s* R; G! M+ ~; p# @' m- T7 _7 `6 u8 A7 H: f! d
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
8 h* r% H/ z2 x' }' l
" \- `; a8 H4 j& H) T v: o7 K9 s以下為引用的內容:
% \: H. Q6 Z4 G( @! v: SUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; 3 ]% [0 l3 _/ E3 l" S% h
( r/ |$ K ?" ~6 ~
7 W Z% ?! u0 y6 r ^- u. ]% B 將文章轉為頁面
% e- o4 X( E$ k/ R% e% }
- v. N9 d0 ^( |% ^! g8 K 依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:, H3 `. u" L7 e* q4 f; J e
+ n3 N, k2 [- X! s2 D1 \+ s& C+ H以下為引用的內容:
8 L# f" C* ?+ ?+ J9 S( ?/ dUPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'
' Z9 w3 I- k7 U3 F8 M. j8 f. p: X( `4 B
7 Y6 i6 |4 O- u/ z* d
將頁面轉換成文章:9 K- R8 r) [- a3 p
3 Q! Q; f! m1 Y) O0 o! _) n3 s以下為引用的內容:9 s& k# q# P! U7 R5 n7 I! N3 j
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
& f- l: ~# N* \* n6 j5 C1 z/ G) k+ T7 n, U
3 S( C$ K; ~2 N& ]; h8 F5 g- D' J 更改所有文章上的作者屬性
2 o6 e4 b2 v- s$ B0 u
# S ?# j' H1 l 首先通過下面的SQL命令檢索作者的ID:" _* z% D/ Q1 a! c5 \% ^* e( L5 ]
8 [ Q J4 r8 F ?5 T5 m
以下為引用的內容:# A9 o. g$ b' }
SELECT ID, display_name FROM wp_users;
$ h3 Q! [; k" `9 w |
: Q# J$ \+ F+ r0 a9 ]
* `6 g8 c* d. P! Y; C1 p* B* D9 B 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。8 m2 \. t3 [4 u5 j
7 I g* u8 e" C, ]以下為引用的內容:" D6 F$ n$ D4 T" Y' A
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
r4 V; u- M, }9 a* c" g2 |* {" M1 \
1 m/ a- q v9 q
批量刪除文章修訂歷史
; f2 |' a, ^( |8 j. B
0 B# m3 h; I2 p4 |8 U 文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。1 T; F# M+ R5 N/ M# U3 x
9 ]8 o3 Z ?" ]1 X以下為引用的內容:( g4 a0 ]" Y& t0 X
DELETE FROM wp_posts WHERE post_type = "revision";
6 C% W2 d; Z3 a, N+ z! Z8 d" j, P) C4 Q3 l' T+ Y- T
# @: S9 [, @/ a; J8 I( b/ N
停用/激活所有WordPress插件- j2 M% {0 U5 E/ h& l' x8 A2 P0 G% @
* T3 W7 T6 F( l. p, z; L: J 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
, {/ H0 ?$ ~9 b6 f
2 v9 j3 _+ |; k0 g8 Q5 J) I以下為引用的內容:% _4 Y4 V, H0 W/ V* C* C7 P' J% Y
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
! A* ?9 S! Z3 k3 o z h0 O+ _& V9 P U% f
) q$ P5 X x6 v5 ]/ J* B7 X' A
更改WordPress網站的目標URL
- c" y: `7 _% Q n# F, G& o0 v9 `1 o" {" W; u- b
把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
0 C$ t: g+ x9 ?& Y5 F' z8 j1 ^6 V' o) J# j4 O
使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。
4 a. l( E" \% b7 {% A
* F" F5 A: g4 I% B8 ]' k 首先:
" p" T2 q% {: P( `7 @ n2 U3 f, n' C; B( }* ]. ?
以下為引用的內容:
( A7 |( O2 u/ l. R$ Y( p: W2 |" pUPDATE wp_options
$ q( }' P8 j- I1 v& q4 y ]2 {2 sSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
0 ^9 K; L$ o; [5 [+ VWHERE option_name = 'home' OR option_name = 'siteurl';
3 \! p# \ E7 t2 X# r1 }" A9 W5 \0 G2 V% R6 v
x. e6 h- [2 x& G0 j; A- ? 然後利用下面的命令更改wp_posts裡的URL:( g; E0 d4 b, X
. M2 C2 ~* O' u, ?4 m5 \/ B) s3 X: m以下為引用的內容:
* }7 n7 c! `5 f: t; WUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com); * h# m- a* u* Y( m& i1 @
5 P/ E4 k- ?+ A, M0 Y: ?6 f
% r5 }- P9 H/ u5 ]! B# n/ B* Q' @. B+ o 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:9 G( K7 a! e9 Y
# I: @1 M. z, ~: L以下為引用的內容:" W, ^" M7 m4 Z4 x
UPDATE wp_posts
4 u! ^/ d# y0 k" hSET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com '); / C: p; ]) D# p1 S* v* }
/ C- x" I6 F0 K: i; r% b( G7 ]' L& L
更改默認用戶名Admin+ c# @& u. C- L) |" q( H" Q
. j1 [. \1 _$ A- O+ T w
把其中的YourNewUsername替換成新用戶名。5 [) g! n: y8 ` N* M
7 u! z: m; t, Q! x" @以下為引用的內容:0 b% ~. U7 Q1 ~1 R4 j( p
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';
9 @8 Q2 T, u0 u5 j
6 t. T/ w2 F: E. `
$ j" f6 \; V" B/ U 手動重置WordPress密碼
; O# D$ O% U5 w: ~( {+ U9 R
0 a# x, {" ~; d7 e/ I, p 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):& Z/ u# k: `+ g% [* \- q- O
7 g* v( [- V# S8 J
以下為引用的內容:
2 \4 W: d9 Z k! Z$ Q& W7 {% d( KUPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') & n" U4 ?) N& N# k
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
- ^' Q! Y. T* A6 v( c, s: ~( ^# \. c) M
% O' [ j4 z) B
搜索並替換文章內容
3 {" p: X% [3 g0 t7 }7 X9 H: E `4 T
' p( F# Y. W' ^5 E OriginalText換成被替換內容,ReplacedText換成目標內容:4 h8 h8 K' m- A7 Y9 X' }( V' W
( P- Z" L4 k; s7 _2 z
以下為引用的內容:- F. q. x9 U2 k- }+ q6 V' }4 r
5 K4 C+ W. \. ]
UPDATE wp_posts SET `post_content`! |3 E; R6 a3 q1 \! X/ `
= REPLACE (`post_content`,
$ [$ ]: b# a6 X& I'OriginalText','ReplacedText');5 o# R9 L. Z' D. C) F. N4 t
% c8 R6 u/ x7 ~4 P: g" ^( @* C% o8 s
9 ~1 I* Q4 T" y8 ~8 f0 Z 更改圖片URL4 b( p( r, ~! `! @ \
5 h+ ?9 m) S% o1 e+ h/ ?/ D1 ?7 j; s
下面的SQL命令可以幫你修改圖片路徑:
2 t! v8 ~3 V7 N4 T! T& w+ ~4 s
3 j# g( J1 z* X# W! u% Y以下為引用的內容:
3 c$ Z% _; M- T- t* V- C4 j/ x; I1 Z% j% x* j4 D! ?2 p, z* F
UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
! k6 z0 v7 k; x; Y'src=」http://www.mynewurl.com'); |
|