WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
% o3 m& X" t v) V
: [: @& e g0 \ 不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
& W. B* c9 p W) l4 V+ d, b `, Q$ n" i$ w
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。0 B( X- h: `& T) T) \
9 ~6 ~) I' F' S$ K: z4 a7 _8 R
事先備份3 ^$ c. m! L a+ I M
; N, m ^( s" m( V& e1 i: S" F WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。 z& U9 s4 g0 }8 z$ v' c5 C' O
+ Z( d- \3 ]' F. m5 _
為所有文章和頁面添加自定義字段8 ?4 ^- g$ b' q0 D
$ v( G% b6 f4 `' Y1 k
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。3 i+ Q/ o- c' W# K7 c% K; t
0 ~9 @( ^4 S" P( A! M; p
以下為引用的內容:
. G3 o2 e. s1 v1 g) Y! S3 P1 P {6 Z
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)8 W3 k+ ~! p( o: C' ~& a' S
SELECT ID AS post_id, 'UniversalCustomField'
; J* u0 L! Q0 D1 U$ f6 b0 }* y$ {AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField'); 6 @4 n& X; }* A, p" }
# `6 C, c0 _) x
2 r$ B L P a" ~7 L- g. q) O! _ 如果只需要為文章添加自定義字段,可以使用下面這段代碼:9 o$ s2 c4 A1 I# j
2 u9 X) `# @" \4 J, g1 P以下為引用的內容:
. {0 z% h. e, I- m! V8 n- \! N( c$ r! k/ h$ r
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
) R5 d/ _. X, ?0 U; ~0 y1 [! M) qSELECT ID AS post_id, 'UniversalCustomField'
3 {; J$ R. c5 b5 i/ }$ gAS meta_key 'MyValue AS meta_value
: l1 j+ |; {; G5 R$ \FROM wp_posts WHERE ID NOT IN! j. A0 J2 H8 a! R* l+ @
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';
2 F* K4 Z( P! [: y H# k7 e# I4 X4 P
}4 h: G$ E- N7 q 如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
; U) S, G+ X$ y* ^( ~4 R/ F& F q- U1 I0 C2 `# H5 T
以下為引用的內容:. a( t, s" d1 k8 J
, O+ O/ [: W' HINSERT INTO wp_postmeta (post_id, meta_key, meta_value)! d7 X# B3 ^4 r$ H- M
SELECT ID AS post_id, 'UniversalCustomField'
, M' \6 K5 T; h. y6 aAS meta_key 'MyValue AS meta_value
0 \. N2 s& ^6 zFROM wp_posts WHERE ID NOT IN- |) n0 p7 K( Y' O: \. c- X
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';
" p: ]/ ?. G: a ~. t
. p0 ]4 H" a2 z8 v2 u( ?- @
8 d* X1 s* m/ J# r- X$ U/ J3 O' D0 `3 j) W2 J O
刪除文章meta數據
' p# d( S, B0 y [0 j" @$ d
1 A( ]! K: d2 o! h4 p 當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。
' p" z' ?8 ^. b- H+ B. r
; o8 D! ~* q5 m9 z, F/ `以下為引用的內容:) ] G: Z& y' a% {0 k3 Y. t7 p
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
G8 o) v( R8 y9 t
% j8 J- o7 k' g5 [3 I8 F. M" l% X: u4 M
查找無用標籤
% \8 e( \6 d2 J3 S+ D
) g, |+ A0 x( @6 Y( }" r* v2 }9 h 如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。
* ]! d% A1 `) F8 b1 o5 ]
, p) u. D% J% C* B; n+ ~, f7 r以下為引用的內容:. x8 X7 [! K/ `+ W6 j- X
. O) f" S; v4 ]- L! q8 J) M
SELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id 7 R! D# @2 c2 ]7 A+ J
WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
; D+ H( R# O" c$ i- c3 q6 e# z1 D. y! U( t4 J
' c/ j4 j0 X7 x2 m& l 批量刪除垃圾評論
2 v. C: q# V1 u" ?
/ ]- x0 _0 N; w. c' p 執行以下SQL命令:$ H; m3 b! J6 j& K6 M
2 @6 `4 M* l% k' A* j以下為引用的內容:/ r1 t0 Z* U) E' N8 P& ]
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
# r6 @$ g' P" l+ e. k- K* K
$ u/ j, d" @+ p2 h7 A' P S# }/ X+ L! ]* j
" C8 `! x0 J3 W& U" N) n& L% Z
批量刪除所有未審核評論5 v7 A6 K, b8 R1 y3 |" V# z/ p
; R3 z1 D1 |6 P( Z
這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。
- A |) H" K7 t- Z: d2 T& w! g+ D- G9 F* x" A6 n- n. w# N" C! v
以下為引用的內容:
' E+ O, O+ h6 ?. P' uDELETE FROM wp_comments WHERE comment_approved = 0 ( g3 t$ T/ t, P- G
1 K$ W( y4 e$ [: ?9 N# p; L+ {8 F2 L0 R. _6 c2 ]& r; b& p, ?
禁止評論較早文章
7 \" _7 d" o' ~; }( s1 D1 k- }* B1 v3 d9 _
指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):# I+ ^& N0 V2 ~6 k9 D4 b
* e6 U, R) r' W* [: |8 Z以下為引用的內容:5 B2 Q* }" X$ c0 ^
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
1 @% ]- v- V9 J+ x0 ~# C5 t- A
7 s% [2 I' n: \& \( Z4 |) G( y
6 n; N9 m/ a/ o. V4 E 停用/激活trackback與pingback
" Y; h' Q1 R5 n2 T; g' O5 F. s- _! c2 s) Z
指定comment_status的值為open、closed或registered_only。
; n+ A7 a4 E( M+ q( x
6 w. @4 q8 d+ d: l) v0 q 向所有用戶激活pingbacks/trackbacks:( f7 M9 \$ @5 @' ]- x- K
4 P: o) P( \" v5 P- ]0 `/ o. W
以下為引用的內容:
0 W7 A+ }- X+ a; DUPDATE wp_posts SET ping_status = 'open';
6 z0 [8 H* g* e6 ?& H1 ]# o! E) Z! ], }5 E1 W) @
+ S; t# L3 ?! z( R7 a2 F4 A# _
向所有用戶禁用pingbacks/trackbacks:
: Q4 u9 v1 v Y- h: m3 @; m: W& {7 l8 R! _$ v. D
以下為引用的內容:) Z+ Z2 y _5 ~7 p& H
UPDATE wp_posts SET ping_status = 'closed';
8 @1 P- M1 O$ ~* W& f' N9 C: r0 e% i- |, Q
0 Q) {; i$ P7 H; B j
激活/停用某一日期前的Pingbacks & Trackbacks
. [- C5 q/ e4 M: @, E: p; W3 H- M# V0 _1 Z( R" y+ I
指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):, R8 p: a! A& c! S+ l- C
; J3 W/ C" `; j/ D2 y
以下為引用的內容:) g/ Q. u' y N
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; ' k# M& V- v0 H
- S. a9 f9 R# x/ q: A2 m" I. m/ R7 Q
刪除特定URL的評論! {) j7 v. R0 f) d+ }- p4 o6 G
. v* I: j( L. F, ` 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。; u; a. `$ p/ ^% V
6 _3 b0 M# l! r: A, q以下為引用的內容:6 n; |# a1 h+ p0 F7 V: t6 c
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ; / E7 C- \+ U6 [% q) `
8 X8 ^/ S* ^2 s
& I) C5 w5 T2 i2 y9 a! h 識別並刪除「X」天前的文章
9 ]4 X5 u; k* p8 J( y2 b9 }" X' h& T0 d; x
查找「X」天前的所有文章(注意把X替換成相應數值):* C1 p+ w7 g/ e
$ K& J* j7 K0 w" X7 `6 l
以下為引用的內容:2 R, S2 O- g5 Q7 s: p" V+ Y3 `
( q0 g M0 Q- I6 TSELECT * FROM `wp_posts`. Y0 I. U2 r. ?7 u7 x0 D
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X `: q! G: Q0 ]6 U
9 d3 h1 G8 U2 J- I
9 {4 N$ C. c- n$ s 刪除「X」天前的所有文章:
; e7 s. l: I/ p" {$ q& ^* [4 S4 m; c7 x; w8 q
以下為引用的內容:
6 r2 U3 z9 h& b0 T+ @! w
: D% X& @( G- Y& c E* x& K4 RDELETE FROM `wp_posts`
7 V; J" X8 @2 I* w- c% J9 cWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X) \1 b+ L3 Q1 R1 }7 y, {
8 ?& i# H. ~) \1 n
- h6 Y8 \% @/ F# F3 c9 E4 M
5 h: ], _+ s( d# i: v ]) J 刪除不需要的短代碼 Z0 h2 _( p2 c2 m8 \
( W" N" y5 s" A, k9 n {
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:- ]5 A2 n* y6 X. V$ S& S9 C, _- ^
$ z% J' x) r" g, {
以下為引用的內容:
0 {" `% s; R8 g0 _7 J2 @UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
( X+ L4 D7 n2 I1 v& K/ x$ S: a" R) m5 I. z1 p% e4 A7 o
& v5 G5 C1 }! S' x* H) K 將文章轉為頁面
' ^5 p1 i+ V2 R) x. O) D3 l/ v5 M' ~
依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
% e0 d- x( V- A1 S# q
. E2 Q; X% z% F$ M% L% X% Y以下為引用的內容:
2 W$ o; [; T0 C+ ]5 i* \) lUPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'
8 P7 p1 J. O% g/ p
5 r: u# Q! y- X* H7 O4 ^ X: t+ L* Z- L+ |8 ~% @7 e
將頁面轉換成文章:; Y, k1 A% R' m% C& U% J( K
2 F! A" T; U" F以下為引用的內容:0 `6 ~- |* {# k4 S R: g
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page' 9 x, R0 B" r3 K- t, Z0 [) n
& i c/ ~4 s& U- W4 e, |0 m; z0 K
\4 b& r5 F: V$ M2 G0 J" \: { 更改所有文章上的作者屬性
( h! T1 k @8 I$ s! J; o0 T- p2 e0 O) z+ v% g( ] [
首先通過下面的SQL命令檢索作者的ID:
" b, ]4 ~( p/ _5 y/ b& A% N7 E! t* |# d6 [. R9 V
以下為引用的內容:
# g# r& r8 [6 M6 N/ bSELECT ID, display_name FROM wp_users; 0 o& u# x5 u( ?
+ u7 b" d) E, P: `1 q' D4 W
( m8 i% s5 ?- \ X- J# a$ M 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。; V- e5 K% I; V R Z; \
O+ |6 \, D- a2 o+ H! `, f) N! z以下為引用的內容:
5 J9 d- {! \2 n" B% nUPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
! b! U, J+ |/ @# t" z$ X/ L
! u3 ^9 E1 U+ C$ Y% v3 _8 Z. t* S, t) o# p- s- [
批量刪除文章修訂歷史
) A1 }+ A: m5 D: \+ G; J9 U% H, ~
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
" c) U3 e- p2 V2 S1 L. i
& [) s7 ]4 C* _% `/ [9 }% M+ ]以下為引用的內容:
2 F" V5 E" `: b5 X" CDELETE FROM wp_posts WHERE post_type = "revision"; , @, [ Z3 h: s7 Z+ S5 ^
& i2 ]$ R7 g* q# A' M3 ]/ X
& h5 y& D g# I; X2 o5 |( X# u
停用/激活所有WordPress插件
5 V. v4 c8 e1 k- k2 c. a1 j4 u' }
; r8 p" @. Z8 g, e. } 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。0 B4 b* Y, R. U: W8 A/ I
9 N, W& F) T$ h. l& |; m. I& a以下為引用的內容:
! I0 @& Y: C: ?3 T" t+ }UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
1 m7 @5 E% @! w9 q. v( D: M
2 r% Z$ j7 B& {, q8 a
& }, w ~6 n C+ K5 q- [ 更改WordPress網站的目標URL4 K; U6 J* K( D
, T# s) F8 _; A- o' k1 J" Z
把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。: b, |- @ h G* X8 y, ~3 ?
1 f0 y. U& V+ o. b* M 使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。5 ]+ r5 b9 r% q3 h6 R) Z
4 o+ q9 Q+ q9 p0 P' |# o: ^ 首先:6 d: ]2 ^; r! S8 G1 d9 ~
3 a U; @# F m8 T! C
以下為引用的內容:3 u' H$ H# I4 I
UPDATE wp_options
; B: {5 K5 t4 zSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') ' Z/ Z5 O% V$ c, q- H* G/ M
WHERE option_name = 'home' OR option_name = 'siteurl'; ( [/ O n3 {6 i% d
( u& k, F; e& Z- ]) e$ P& n A4 a+ w' _; I: {& Z/ M! J$ g
然後利用下面的命令更改wp_posts裡的URL:# R7 j" L. z {* M0 w) m& u1 w
3 F+ E9 Z! ~; A Z* t( X) G
以下為引用的內容:
( ]- [' E( w, fUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com); 2 [ V( D1 P: e O
7 n0 N* y: o. m5 q
; d) C) k! W2 g3 d' Y8 S" H' t 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:" O0 B( I: o; G7 z
/ d0 u' ?3 a7 U" k" G* T2 Y
以下為引用的內容:
# m$ o' K) @. D* }& |UPDATE wp_posts
0 q$ ~9 t$ Z5 tSET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
1 C0 D7 j1 D: m; W8 }5 ]) ]" x8 G. ]( i! h" O& l0 J: q' [
& ]. N5 g& ^( t( _$ T4 O 更改默認用戶名Admin! ~ g$ I- Z* t4 h
- Z, S5 N* I3 q+ l 把其中的YourNewUsername替換成新用戶名。5 g J+ m+ j; \3 k% Z8 l$ b! w6 |
! k& W6 E, ^& i2 p, k2 S: z8 ~以下為引用的內容:+ S# ]' p: k8 \- u
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; + l- Y6 Z; X! R8 Z8 k2 {
9 U1 ]! I! ~9 A4 S
9 u/ ~5 w& ?0 o% i 手動重置WordPress密碼" y& v! v5 W$ n! V- T. A* |
& ]2 ~ O- v1 q) l* h" D( `; |
如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):$ {/ P: ?) j4 _6 }, l/ d4 r1 {
6 y7 ~$ r% l( d: T0 c: }8 F1 ]
以下為引用的內容:4 x& }9 U; J/ `+ w1 p9 A% o2 k4 _
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') 8 R0 a U. n, f5 [# C5 I4 O
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
" F. D: N% {( M1 \) R# S" N, t
8 f6 `- U h5 b. s4 ?2 z' ~ 搜索並替換文章內容8 q7 J7 ?+ H ?0 O. E; d
/ j' X/ m3 X6 c, Q# B OriginalText換成被替換內容,ReplacedText換成目標內容: P' ~+ u+ l f5 o4 U# R
* p: Q" F) ?" v. m1 i9 O/ U' B/ B
以下為引用的內容:
1 l, j. ]7 |! T: a' A% H5 p! z. R: y" U% U: B! L
UPDATE wp_posts SET `post_content`
6 ?8 x% n& Q' W \= REPLACE (`post_content`,
3 E5 ]4 A. B4 _( s. R$ Z, f'OriginalText','ReplacedText');0 ]+ b7 v. q0 C% H3 l, n4 s
/ l1 z8 H6 N1 F0 _
, Q' i, J8 U9 ]/ _( J- o9 E, @# G' F9 V" N, N& g# J0 s @" ^
更改圖片URL. K1 E* @' @7 z) l" a# @0 D) }
j. [; u* e/ D+ `, C
下面的SQL命令可以幫你修改圖片路徑:
" @) w. I$ {# M/ f; w5 Y; t
{. x9 h9 J* s& g6 V! G& u4 J- c以下為引用的內容:" ]: `- m. Z7 |; R" ^
4 w. [4 D. G. H# A* rUPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
, o/ A. t4 O4 }0 V, l+ X) u'src=」http://www.mynewurl.com'); |
|