WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
$ S- p' t9 @# Q/ A& Z$ X7 ]( E+ P7 z6 Z
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
+ d' V" o4 v8 e- j5 m
( S; M! G3 ~% w' P% T9 W. R0 x 下面要介紹的就是一些省時省力的WordPress SQL查詢方法。" i# ]8 h" ]; P4 p- z
/ W w: ^" R, |, n& ^6 | 事先備份
H- C* y) G0 C) e4 r' g3 \/ G
2 r1 ]/ j) K1 G# @ WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。( {4 i( o, y5 M2 Z/ y
h' i3 e S) h# L: k+ e
為所有文章和頁面添加自定義字段; \, i, H q( W* C' C
5 O# |- F7 F7 i* u6 a+ I
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
/ |* ~ A, D. \" X8 Y2 F8 ^. f
* v0 L% j" O- c: k1 }/ Y' x以下為引用的內容:
: c$ u3 N# }* T
3 N6 F; @3 W9 a" N2 XINSERT INTO wp_postmeta (post_id, meta_key, meta_value)* O0 I- m9 B; j V% E, F; X
SELECT ID AS post_id, 'UniversalCustomField'
+ s/ `% v/ {- ]& j% t: F( n: YAS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
8 }/ Q3 e+ j3 e6 n* v3 |9 F8 R7 M S9 J7 u2 U+ q5 I& Q( @, W3 W/ `" m$ H
4 A& X* D0 a# e" m 如果只需要為文章添加自定義字段,可以使用下面這段代碼:
& e7 O" M5 s, V, u$ F6 F; q( O
" C9 i4 K' u4 l3 ]以下為引用的內容:
5 X" h T- z' q# f. M; E: G+ `
' W: b# H4 \1 i m9 F9 ?' \* HINSERT INTO wp_postmeta (post_id, meta_key, meta_value)0 N, P# X6 M/ X( W/ [8 A" k
SELECT ID AS post_id, 'UniversalCustomField'7 ^2 B: q$ |1 a* Q
AS meta_key 'MyValue AS meta_value/ Z8 |5 x; O, U; m A
FROM wp_posts WHERE ID NOT IN
" C1 r; x( j% T% U3 C% T# E(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post'; . ~0 n+ j( U! r" ^8 k
x7 e' o6 D9 t* C! i
) r s U* ]3 @* o8 W 如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
. d9 x, s7 q! ?9 F) }" F& F, ]+ Q( Y1 W8 f1 V' B; G: b
以下為引用的內容:3 T: H5 p( X1 {# [, V8 Y
# _+ A! k8 a) C8 C# y$ aINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
: |! f7 X1 B& J9 x: zSELECT ID AS post_id, 'UniversalCustomField'6 x1 N2 @ a, H/ Z8 }& {! U
AS meta_key 'MyValue AS meta_value5 [; c7 D) S0 _2 M+ S' ?
FROM wp_posts WHERE ID NOT IN
1 n# G5 j8 L6 Y5 I3 M(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';
+ X+ u+ _* `) I5 s5 w
* ]- R7 I6 R V9 _1 l6 |2 d+ j5 h/ B2 Q2 U
5 K# y# H% f2 M p# D7 m0 ~7 j 刪除文章meta數據
0 l9 k# w' q& F( z* p8 L+ W
8 J( S/ k+ f% m% M 當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。
+ R7 Z( t& k: o4 I$ X0 @ _2 Y
/ F+ f6 R& c. V以下為引用的內容:& q1 o7 \) ^* |* A+ x
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
2 M% H0 G( b1 S( F! C
* h+ y, K2 {9 ]1 }6 l% Y; U. ?+ E c5 Q; L9 ^3 D
查找無用標籤
% x b# p9 A6 Z" D3 Y' x1 @+ g2 J* D# ^+ ~8 ]
如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。# K* A5 Q- P( E. o: D
6 g4 A8 h" K: Z; q/ N! G
以下為引用的內容:
6 u8 J' @$ u1 h; L$ i
9 i! R! c. C1 V4 RSELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
: M& _( S: e6 Q! P M6 b/ sWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
* I5 p& h G& G s6 D3 p5 p
7 ^1 e! V. B1 m# i1 @" } H6 t |( ^( ~/ W8 m' W# i0 g
批量刪除垃圾評論
7 f' j3 s; v; @) M: t) v+ I
# z( q$ ~( S- D& Y1 W 執行以下SQL命令: [: K. D ~# t4 |) Z" B
1 a2 f5 K3 ~( n6 p9 J4 g- e, y7 ~
以下為引用的內容:
' c& \# a$ R# y( WDELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
+ W# o) ?% o$ M. V4 F
& }- V: ^$ q! ^0 g3 |! L
9 M# i# n/ ~* f9 ]3 F6 P- a, T% N! K( x8 w/ {5 n, z
批量刪除所有未審核評論2 e! T0 R/ Q& V) s9 ]
0 e' K c. M2 X 這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。" l; b$ r9 @) q9 d) g0 N
/ h6 j8 \ k# \以下為引用的內容:& g/ J8 \# k% [& A
DELETE FROM wp_comments WHERE comment_approved = 0 # ?8 U3 F+ u: S; Y: X
- [" c' f; l# _0 q2 k& z
" t$ ?, l* C) |! u2 b: ? 禁止評論較早文章7 u( B( ^7 | k2 @# \/ @8 }
8 l3 M2 X, G) K8 v! j" ~# Q4 o
指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):0 k. {$ G$ l+ ~0 n; u- c6 w2 q
2 |9 B/ M' r3 d1 c/ N8 _9 w: W
以下為引用的內容:3 Q# y3 V5 x' ~0 ~
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; 5 l0 y: V7 l4 b. f5 A) N
- v4 Q; l7 |" R, {* E* u, p0 F6 x. P6 @: |) }# f
停用/激活trackback與pingback* j/ y& o4 k; i, }
6 t! T* W( Y* k. |% F+ S# k
指定comment_status的值為open、closed或registered_only。3 s% X- J y* d8 f4 _3 f
& ?' Y- w6 B. n4 O1 ~$ v8 k
向所有用戶激活pingbacks/trackbacks:, }$ r! a+ l9 H' \) o c! V
6 n$ ^ O: F4 V, b以下為引用的內容:
5 N9 ^$ ~- T- X( S9 {+ V7 ]8 U3 qUPDATE wp_posts SET ping_status = 'open'; Y1 g7 L- S6 @* v3 K) F! g2 i
' m4 L" r; s; [0 E# _$ ~
# I' e" {: @' }$ o 向所有用戶禁用pingbacks/trackbacks:% P& {8 R5 ~. |5 m( Q3 p
- b7 T2 C& D5 D" @: b0 u N
以下為引用的內容:" x) h+ O2 E/ f7 d
UPDATE wp_posts SET ping_status = 'closed';
7 Z0 k+ p% _& W1 C( @& q
U) e6 I& M- \+ N8 Q) a8 O4 K8 v: D) G; S2 o J" q; f& f' @
激活/停用某一日期前的Pingbacks & Trackbacks% a( I; d7 s4 z o0 v6 p
" q3 A! ^0 U; S$ Q) y7 @3 S 指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
0 L# C5 P$ k) C) @2 c
! S, t+ U8 [* S* y0 a4 O/ e以下為引用的內容:
6 _* F+ a- E- z1 o% n8 hUPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; . F3 b" x& ~; M7 }1 g
! L6 `( S( t; @* n$ w! |# Q8 c! Y0 L7 A9 x) |# f$ t4 ]- a9 l
刪除特定URL的評論' l, c' |3 Q: x+ o# W5 t
, a @2 \' [+ k( c 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。7 N( Y) `* ]7 f( M/ Z$ h& o" u
5 u, u: K# [. N6 z; r以下為引用的內容:
+ g7 m8 h8 a( K! U" EDELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
" `: X8 W, }2 b a8 Y
9 ?7 v) H" q& p8 k( m) O1 V0 u- A9 r" h
識別並刪除「X」天前的文章& `, N+ m" Z/ L
0 U4 Z7 Y& R* p4 F 查找「X」天前的所有文章(注意把X替換成相應數值):! V+ n) L0 j0 i$ M% n" y+ l
) u9 Z* e4 }. i; l- ~以下為引用的內容:5 a$ o6 {; k! N2 b. ^) N5 @+ |
7 j. S; @9 L% ]7 n0 |5 }" D' l
SELECT * FROM `wp_posts`
: X2 S- x# f+ r6 {* l/ RWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X 0 s4 v, A- O- U. s+ r
9 T2 H4 d$ l7 |
6 X, d" i: u7 ?6 R! o 刪除「X」天前的所有文章:0 e2 U* ^+ M5 F' ]2 A
+ D) y! f0 B' ~5 P8 q" F- H
以下為引用的內容:- T8 g% y6 d8 K W! ?, b6 o& F
- f1 n% o- R k1 E" s. j$ bDELETE FROM `wp_posts`9 I$ T2 E' C. ]! w! b+ y
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
6 X. I8 D5 I4 N. i# h
. b7 ?* A' f( i! E) s' m8 k' S- c! S2 C
: G# R3 P* N2 G; s3 J* _! B+ x 刪除不需要的短代碼/ L$ d; Y* ?5 m1 ^9 {7 U3 c0 b
+ ~! {5 m. E8 w; `0 ~ j- l) O
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
" P3 W' `/ f' C2 y. ?$ \6 p3 h& X* K. {
以下為引用的內容:
* J { I; _7 Z9 g" ^4 v" [! IUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; : L+ y: |& G( @# s& B" t
' Q" `6 Z* ?( [8 Z' v& ~( G2 b
2 ?+ L& h' N& r @ J; _ 將文章轉為頁面" F8 D- y- N& W' w, t; F
9 E/ v/ @2 X$ m) t9 B 依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:" E& G2 }( d) u- k% S
2 b. N9 I& E1 ?9 ~ _以下為引用的內容:
2 h' n/ P( n, ?& k- tUPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' ' K( e# J2 \+ g' Q, ~
! n. {$ s2 H* c K R+ h0 F% V# M+ ?' E7 F. g" n
將頁面轉換成文章:
4 q9 \! P7 E4 G$ u6 n7 m9 d
! x7 `$ k6 X% \3 g' r. k以下為引用的內容:9 M3 r8 V5 T: L. D4 P
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
_5 [7 V3 x# v: a. m
" W" Z/ X4 j g0 f' s' m& j4 p' W0 Y" j" _7 y m0 T
更改所有文章上的作者屬性
, s+ {# K6 E8 ~/ z$ e7 H. k& V6 Q
( U% R J" n' O' Q3 n7 o& ^ 首先通過下面的SQL命令檢索作者的ID:( {6 m: @* {) j( M/ P
+ u" B7 Z6 A0 r$ P( T* [
以下為引用的內容:% C6 X! \- \* J
SELECT ID, display_name FROM wp_users; 9 A' O8 Q: \1 b+ X
% P0 z$ L+ L4 G, C; S b4 @
* U }6 z6 u8 z( t 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。4 ]/ V. f$ ?( U3 D
7 x) x: R2 z$ s9 ^以下為引用的內容:
# D% x- J) a3 `/ v" [, qUPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
8 \" [; h" v4 x/ Z
; s/ |. r2 K: t1 M/ k7 u$ P7 S" B! R2 z5 G* v8 D
批量刪除文章修訂歷史
& f! y4 _/ Y. M# a( Y
$ Y2 T3 o. L# q, A! f 文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
# e, M( H- Y8 @ h) @! k7 W
! ~7 \- N V' f) [# m& N* V以下為引用的內容:8 i2 i) T( @# X0 X& f+ M& v8 ?& S- H
DELETE FROM wp_posts WHERE post_type = "revision";
5 j+ k- j7 \6 T8 i# T* m: U
/ [" ?, a5 \' r( s0 E: D9 o- H$ M2 Z3 J/ t
停用/激活所有WordPress插件) i ~6 S# ^4 \3 a5 n- B
. x7 ~; w6 W3 u5 ]* r# w9 O 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
" i9 a. d. u7 N; i" K( w- D! q
以下為引用的內容:) y( q8 K, F, R% Z
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins'; & X) `: d$ D$ o
0 q& [+ Z1 `# z. R) Y& A# I9 I1 U( K( L5 c0 S. P0 r
更改WordPress網站的目標URL6 l$ A- F- l4 d+ b7 C
% Z" p. w' e- B( h% `" q 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
. t8 m9 ]% S- y
6 e5 @9 e% }* I4 G2 F& P 使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。5 m2 a2 q* n1 p8 B4 C' ~7 T
: p+ |8 V' B/ r* z
首先:
1 O3 ?; Q/ L: T# i4 B5 S
2 D5 V! m' {; F以下為引用的內容:
) E# }3 Q/ R3 R; L! |% JUPDATE wp_options 1 q7 [+ a! J2 P" s/ |7 D; v( k
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
n3 k6 c5 H/ M2 a+ JWHERE option_name = 'home' OR option_name = 'siteurl';
, g% X" \% _* e$ E
& @' N/ o. r8 R! B& j$ @3 g2 g U3 O/ S0 q+ r
然後利用下面的命令更改wp_posts裡的URL:
2 W) C2 K `- K: v$ n" K6 u
) Z1 [. B6 k$ u+ h/ c4 ~ j$ E以下為引用的內容:
' n: k9 ^5 y8 `9 T/ TUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
/ Z, Q; j7 w- |3 \8 c% G* w- d) H+ j& H! [) J; q
) i5 z4 e* m: c# u; X5 k5 b7 F( ~
最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:- g4 e f2 |* O4 ?
/ @; R0 w, `0 I3 q% a以下為引用的內容:
! W1 e7 G m8 V& R2 A5 n( v6 cUPDATE wp_posts
: a$ A9 q' Q! d- jSET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com '); . v9 M- T9 S6 V& w9 h/ C
# ?2 g& ^# d; b; X& W
7 r3 W9 G6 d0 P% | s* [0 ?0 A+ { 更改默認用戶名Admin
3 a5 ~: B4 F4 |5 _
+ m( C; [7 ^) [9 _" m; ^2 Y- [$ H 把其中的YourNewUsername替換成新用戶名。1 G, E" h- F3 ^& F0 A; ]
1 ?# @2 S6 {$ Q+ T: v0 `+ J' R
以下為引用的內容:3 {* n- I4 ?) H; _$ j
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; - T; d" A, B& \( i& m' D9 D
5 R* L# J; G3 {+ o4 T
7 C3 a( J& {8 g. [ 手動重置WordPress密碼
+ u, \% ^( f; }) b/ `# M5 n8 X/ ~$ h; n' ?0 }3 `
如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):* ^8 k" f# Z/ u3 n `
6 r# A3 H" L* |& j4 `' r* K以下為引用的內容:% R: p% R5 K3 Y1 y
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') 9 i- V- Q1 g/ F' R
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
. [! K; w0 U8 O0 {* j2 Z- }8 Q) k# W9 C( i
) Q. M- q) G" ` 搜索並替換文章內容; L l: v. @9 `* ?( d0 A
2 I, A, ` V# D. n: [6 @! C3 K
OriginalText換成被替換內容,ReplacedText換成目標內容:/ Y$ K! i+ y- B% n. Z* p+ i
% J* Z7 v- d/ e [+ P' |, Q& x
以下為引用的內容:; y7 M" ^1 ^* M
+ c! v: A. P; f1 @
UPDATE wp_posts SET `post_content`8 S/ l8 z/ X) s3 G1 _
= REPLACE (`post_content`,
+ N1 |/ \. G/ u( R( H# U'OriginalText','ReplacedText');" s; ?: P' U: C- [( X; j7 M
7 ~- n# M8 |( e4 ~4 j/ \! D' w' _8 K' Q0 G$ G
! p! y* V) e' [# M& N% C! g' \ 更改圖片URL
$ w' r# R5 O* ]! }
( Q- m; u! J/ k. ^ 下面的SQL命令可以幫你修改圖片路徑:
' [3 v9 a* h: [0 s f4 U; \! g+ f! E# x9 h
以下為引用的內容:
, G3 L' N! W- L( }6 W8 U4 X0 c n
! c$ F e7 C) r% O! `4 v) LUPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com', 9 ^; y2 d( [! h; o$ c5 Z0 I4 h, U7 l
'src=」http://www.mynewurl.com'); |
|