WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
; v/ P& Z1 R* w7 r& x' `& N$ M% E- E# O8 |, R; h
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
' |+ @3 h/ H) H) o, q
- C* n" [" P8 [2 M i* d* f 下面要介紹的就是一些省時省力的WordPress SQL查詢方法。
! Y$ m. W- x$ I( a. i+ d) |$ }$ _! A) R
事先備份
+ ]' ]# u) F3 n: v: b1 B2 R4 N A/ S6 S0 j5 u& [" B- \
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。( }3 R3 x3 W- C2 D1 H/ e
. b$ G# K! W8 U0 ?% ]* y! I 為所有文章和頁面添加自定義字段
8 \3 F) M6 V# r; W0 _5 E' S5 f0 ?) B. |6 s, u& @* p
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。9 [' ~/ K3 Q ` N6 l4 L9 [8 i
4 M! ?! ~; U9 V以下為引用的內容:
. X: ?" v* {- B: h1 p
# h+ ~+ E% j1 ?/ m$ r6 A6 ~/ GINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
* u& W6 ~) r% B& F4 i* e5 J& fSELECT ID AS post_id, 'UniversalCustomField'8 a% V( f, k) T3 g5 u
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
( H2 } O) x; }" r5 l! x1 L& c7 H+ |6 T6 z9 B6 L) Q
7 q+ m& Z, t1 e6 f* c- r$ H 如果只需要為文章添加自定義字段,可以使用下面這段代碼:5 s' G5 y. |8 Z
8 q: t" L& g: S4 N& E9 d以下為引用的內容:/ K5 b) N: @4 r4 I* q6 u
' J, @) g+ J* Q; }: QINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
5 G$ w, r0 Y0 F" [# ~SELECT ID AS post_id, 'UniversalCustomField'2 \$ X, W9 I7 n0 h2 S! c5 c
AS meta_key 'MyValue AS meta_value
" k) g. f: q# C# p0 @FROM wp_posts WHERE ID NOT IN
9 F, k7 T; E' [$ N+ N; D(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post'; 2 A: ^3 `9 ^$ L! d0 e9 S2 f
" e+ t% D7 [+ Z
) |8 v5 O, k8 k2 n2 R9 \5 u+ U& D
如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
: E: T% G+ I! M( ]/ H
) v1 T" i* b2 q& e7 ~+ n以下為引用的內容:
2 f% Q: z* n8 u" P! M/ k3 _# N; s# l. E2 B7 p
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
/ T$ Z! N9 r) iSELECT ID AS post_id, 'UniversalCustomField'( x# W! m& c2 p& ]- q
AS meta_key 'MyValue AS meta_value# e) _6 M. ^1 R3 K- i, {0 n
FROM wp_posts WHERE ID NOT IN" k. m( \$ v' s1 c* O
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';2 I& V; r) U3 N1 ?7 Q# Z5 W! y- y5 o! g
p9 Q" k, q7 t. m3 R. w
! ?7 Q" C5 J" d- A, Y
: E! ]6 s, ^. x6 S, l
刪除文章meta數據
4 m8 w! G0 g4 Y) Y- T! k! W% ]* o7 ]$ n7 p* V/ m
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。- @% A: u. Y3 o" S. b7 E( T! c
1 \1 h3 e( X5 N, K3 z$ y; G; C以下為引用的內容:* V9 f/ C9 Z8 y( u1 f- c
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
3 Q# n: @0 o1 i# g9 q, m3 n. v' _! _+ }4 M
$ G* P: u( g. F4 S; R" A/ u 查找無用標籤- V! P. q% j2 C }9 Y
3 R6 y$ N- z# q) g5 ~8 x! C: p 如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。0 a9 u, [+ s/ s
- Q9 M; Y% p- i& a以下為引用的內容:
; T3 S6 u/ `" \; R
. k L, X: @. i, u% D: W1 \1 |3 OSELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
! g$ U6 |! |* aWHERE wtt.taxonomy='post_tag' AND wtt.count=0; 8 Q) s& Q# B6 o' e
( @0 O) b! |# H& M# M) u @. d/ j
批量刪除垃圾評論
6 R' f5 M5 g5 l1 o' u7 G7 z) z2 v% b' M' T/ F& g' p
執行以下SQL命令:& f, @8 |& m/ N
1 \* q4 o- z0 l0 m以下為引用的內容:1 H( `4 b# |( W' j% e3 L8 S
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';* S" u# e5 u. |) V
' _5 Z" s9 D4 e* i; u+ X2 I
p6 z d* A- n, k: ?0 x3 }& d* U, b- k7 o( r; I/ u6 L0 t: {
批量刪除所有未審核評論! O( |1 ^ a7 p
) z6 J+ }5 T8 W v+ \7 @/ { 這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。
; i3 A- D7 s% n2 f' D; k; z2 H
以下為引用的內容:
' H) O# N3 f: DDELETE FROM wp_comments WHERE comment_approved = 0 K9 B) i3 N4 d: H# m6 q
! ^0 P1 o: g1 e7 p4 y
! v% m3 H9 _: C6 G$ |7 B8 r# [ 禁止評論較早文章
5 b( O1 T- a# A& m( n
5 B" J9 L8 ]: ^ 指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):* U* D- |, p" {
+ Q; F& H: a' }! C以下為引用的內容:/ n- F! Z0 x; i
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
( k- E& k& x5 ?5 j1 p
" R* Y! o+ ~9 |7 i
" k: S% f3 L. s 停用/激活trackback與pingback
5 a5 r. g" a8 H; J) L9 j( \4 t. q/ c+ X& w1 M* {: ~# K$ P
指定comment_status的值為open、closed或registered_only。4 l: @& i& `8 e( N: u- a
$ H( ^5 O/ C, D% M5 m3 m 向所有用戶激活pingbacks/trackbacks:0 i* |% k- _& r) j$ ?2 N
2 y1 x9 j3 P+ [# M, t5 b- G( r
以下為引用的內容:
" o1 S+ R) X, fUPDATE wp_posts SET ping_status = 'open';
: t' N/ u. [, P- X+ M
- X, H- l9 }4 t% k; h- B0 I6 d1 C2 a+ }# W/ O u
向所有用戶禁用pingbacks/trackbacks:
' E' [( R$ a1 j
B1 P9 u/ X$ T* ~以下為引用的內容:
9 ^% K) M) U+ |3 V p# H3 g0 uUPDATE wp_posts SET ping_status = 'closed';
4 H( h1 v/ P D/ w( m( \' X, x$ j+ D# }
2 j, I. T1 v& \ 激活/停用某一日期前的Pingbacks & Trackbacks
* Z2 H7 G- ^& B6 ]) z0 m" f5 H2 {* c2 e" u; c% I9 V5 C4 v
指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
$ L2 h# N" a3 O3 I2 `# Q/ I
% u8 C8 j" T; @以下為引用的內容:- @: X' U; S9 r7 S
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
4 Q6 u- k' }% e2 L5 K6 A% Q8 F- o' X P9 n) ~ y
9 [; L5 G9 f/ G w4 u2 q( K
刪除特定URL的評論
: D, D) T; t8 z4 Q
# a2 C2 y% W$ k. d/ ^. _ 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
6 M( k8 `+ L( d; H3 N/ e! b' Y1 n/ y
以下為引用的內容:
1 b& |" D$ ~7 t4 j" qDELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
, ?" f n$ n& c4 ~) o- l5 C7 j, _; A. G% m9 z: G4 ?% p+ @1 Q# Y; `
+ f) o* d3 B ]; Z0 c 識別並刪除「X」天前的文章
* V+ N2 B6 B8 o; v R% |
5 a3 R$ z/ ]: \' u: v1 n 查找「X」天前的所有文章(注意把X替換成相應數值):* g8 H# ^/ c8 a" m7 S& v* y4 e5 v/ z
, q7 }0 a0 t5 F- Y以下為引用的內容:! p6 R+ V5 @2 D. u) ?( |3 [4 F/ q) x
S+ T/ s% m# q) ?SELECT * FROM `wp_posts`
7 J$ ^" u* D/ o- tWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X 0 c# D& L0 n+ g1 {& A! @
4 f& Z' e2 l* [; y8 Q) h' w+ @) ?
% |$ F% V. n2 o: M9 |: N$ i2 V 刪除「X」天前的所有文章:
/ @0 Y. ]4 }) h6 w. L
( [6 R0 ? G; K& D; u, D1 N以下為引用的內容:
/ z, z! {/ E3 R6 F0 @
; [# m7 F1 u* |- |DELETE FROM `wp_posts`
' z+ ^4 l8 T! {WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X: U8 p& P f+ e9 j1 m6 b1 w
# X5 ~' R0 q5 U
6 g% w7 C5 {$ n3 `# @
. s- E8 @, a, ?- \# Y) W% n) _ 刪除不需要的短代碼7 U) t p/ k& Q2 \. B" D
+ i2 i2 s% _4 P; o8 u
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
# @6 L% Z& ^0 ?& P, Q( V$ Y3 N% { g! G6 `' H
以下為引用的內容:
4 o. |- i& k! p7 uUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
* _1 i( i! b8 n% S3 S0 h7 E3 t3 t$ i/ q9 p; b
$ H* s9 B& s2 o8 Q/ [0 m+ P' U 將文章轉為頁面
5 ~% J, r( y- b2 Z* v1 ?0 s$ D# u3 r' J1 }) D; }$ m; h/ s/ `
依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:9 T2 S+ U, K6 z7 }: p. [9 m3 i
9 I" ?4 e. x- u
以下為引用的內容:8 e) C% ]% v& z" z/ l$ h9 E/ k
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' & f& K. u+ i7 a7 x: \8 v3 X: B
' @! C4 F. Y% e, f' p% v i# t# Z5 e! @7 A0 N- W
將頁面轉換成文章:
# y% O2 g( d; ~ g- c
2 n; }* R0 H6 v! E- o以下為引用的內容:% h& c. f( W5 _& g. Z1 G$ ~
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page' 6 q. S0 F1 g# r# ?" u3 d
& d! M) \# ]2 w
6 F9 B% h% r7 ~4 M( r; ?( r
更改所有文章上的作者屬性& E+ E% a0 @# Y- p2 q! z* w: T' c) F
. A; M' y) A" e
首先通過下面的SQL命令檢索作者的ID:6 D3 ^7 {6 E( y: X% q
2 [% j X A5 c; i0 v. r I以下為引用的內容:
6 C2 Z+ z2 t5 V3 n; B, F# V6 b4 aSELECT ID, display_name FROM wp_users; 9 a( p+ W6 I) f
, Y: P* t% `" G+ c) P
4 w! l/ C8 u$ [8 B9 a, T4 u 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。
# c9 _% \- l& W# ]; _7 W) t
: X* _; `+ E" m* s/ U) T, }$ z9 l以下為引用的內容:8 T+ e& v* D/ ~' n0 b- {
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID; 1 h) s3 ^$ T! Y2 b5 E" P7 o# M
1 M8 A+ r9 m4 Z8 o
5 b/ W) U* X/ ~# d# L' e 批量刪除文章修訂歷史
+ ?( b4 W: a ]4 H& w0 k/ ]# h
! g1 f; b4 }! e0 ?* E% i9 E 文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。6 D# h z: a& t$ H, E' S2 O
6 ]' g8 x# q0 | T" B; @+ p: c- ~5 _* J以下為引用的內容:
* A7 @. r1 H$ c7 F/ x: h6 F" a! NDELETE FROM wp_posts WHERE post_type = "revision"; $ l* ~5 u+ Y2 @+ e
7 S* y8 A# c5 C2 V" l U
. _( Z, z$ s; E, S 停用/激活所有WordPress插件* Z5 o' H1 u; b# i2 w0 A
; f1 h4 }5 i9 F* i# ` 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。/ h: F, C% F4 X5 ~5 P9 h
" M" b. _ ]0 w, ^: t4 |
以下為引用的內容:3 U9 c/ @9 i w) V4 \$ ]
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
7 M! R6 I& `. A
2 s$ s+ C* f0 M% u0 K; s2 ^1 A. ?: L+ G: r. `$ ^- x: \# ?' F N
更改WordPress網站的目標URL$ w5 j, E, E) l
. t* t5 y$ m! w- F% E. L4 c 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
$ [( T% Y( @. l" u9 ~9 v8 i& l" J; N* t' X( j7 \6 ~; ~/ g" r
使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。3 Y3 y+ r4 ]( ` O) \ w
. }& r$ n* s, Z! q 首先:
3 R5 U$ |1 x% X h
" i& {+ z7 Z; k; o1 W以下為引用的內容:
0 K- R/ c1 }2 ^: ?4 o* F, E9 RUPDATE wp_options
' ?# w' W2 _2 A! V5 D) rSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') : T# |$ f+ ^4 z1 V, Y
WHERE option_name = 'home' OR option_name = 'siteurl'; % k# @, w: k# |; p4 X
/ c) x# e2 w# c7 }% o# p, O
% } y( z2 ]2 g% k; l
然後利用下面的命令更改wp_posts裡的URL:
+ `, e+ S8 S7 K" b/ X
) ?2 n) P+ W5 h3 z3 B以下為引用的內容:
. [. W% r7 Z( Z8 _0 rUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
X4 N/ q2 M2 _* K; a0 O! j
' K& _# q6 x& y9 P5 H/ q# Z/ S8 L, V1 d0 @% Q0 A( m1 c6 u0 M
最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:
$ a' v% L+ Y$ Y6 H3 c. X
: ]4 ~* k6 X) ?* b. C- g+ R. i以下為引用的內容:( o' q5 T% ^7 v8 H [' v. S
UPDATE wp_posts ( x& ~# Q N3 O0 Z
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com '); & z' J4 ~' G& ^, L
5 G1 J4 B% Y$ b, C, U0 ~4 i# g
1 ?: V9 P' P/ [+ ]9 j 更改默認用戶名Admin! q/ L: q$ C" O5 ]% U/ c7 Q% z
# l7 K q2 [' t" p& }% x 把其中的YourNewUsername替換成新用戶名。5 m; O/ ]+ q9 D
3 l2 X% R9 e7 p以下為引用的內容:
Y' O, \/ U/ j3 }* N2 gUPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; ( U. g' H- {0 w7 l/ `
& `! u: J; |$ U/ D( z: D, f$ ]: e5 t) b
手動重置WordPress密碼* ^4 h& f$ l9 H) t; V
5 T) P3 s3 R9 I; u% D$ h5 B
如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
9 k4 V$ L+ g7 C4 `5 W0 D2 e& H: ^: m$ C# Z2 N- F% F6 D
以下為引用的內容:7 t; d9 {4 F9 P$ U8 ~( W- ^# W# O
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') ; B1 D! e9 E2 r2 |% G8 V
WHERE `wp_users`.`user_login` =`admin` LIMIT 1; ! [) q3 f \- D8 C0 @% q) Y& w7 B
# f3 Q$ P/ t, j9 k" s) {
V; E6 j" s/ A* f/ m
搜索並替換文章內容- @5 L v M1 l- x
/ g0 u; B' p. Z# }
OriginalText換成被替換內容,ReplacedText換成目標內容:5 z% I4 h9 M0 D4 ^( C
3 a$ c3 F5 H! M2 o! O' m8 s
以下為引用的內容:
3 g, P5 \2 f' c; X. q O
1 \1 H; d, M% k+ V( [. CUPDATE wp_posts SET `post_content`
) ~, M5 E! u+ @7 v/ d= REPLACE (`post_content`,
) V6 u/ H# B7 k9 d% x# k& Q6 Z5 N q'OriginalText','ReplacedText');1 O; x0 {( t: ?2 S2 I; K
# i( w. l! c9 W5 ^4 A/ Q$ a( n( R) u1 @8 g. a; x
3 o1 \) Z9 ~& I% n# i! q6 B2 o
更改圖片URL+ o* R5 k' A7 L4 q7 G
+ R1 y/ l/ D$ g! t% Y S! l+ o 下面的SQL命令可以幫你修改圖片路徑:+ M! G8 g. ]/ ?" k2 j3 P: ?1 o
9 c, O n! g3 f: `; e
以下為引用的內容:
- ]4 R- z" r" A; `" B& _2 A* ~$ j0 T7 ]5 ~8 Y/ _
UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com', ' U* ]9 c0 y9 n/ u3 I" s
'src=」http://www.mynewurl.com'); |
|