WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
, o3 @# C9 k# V% t1 F
7 F- T, ]% U* w8 N; |2 \ 不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
0 [# M m N3 t4 Z& \* Q$ d/ l" N L( l
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。
( h. j9 N6 |. @$ Z3 O( ]/ {! h$ B& I7 j- }- D+ K7 H( o) s
事先備份
) @5 D' O' x' t5 R5 ^8 C' Z. Q/ M' w; r
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。1 F+ k% K9 f" b2 M
. _: |1 J/ @- K* }0 g+ J4 I# J: y
為所有文章和頁面添加自定義字段 M3 A# d$ ]0 G, I
( r( y# W+ R0 S 這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
7 Y8 z5 _6 R0 ~. U4 w1 f$ k& X3 Y* S Q3 y$ [
以下為引用的內容:
9 ]) O& n2 }) a# l! m1 J
7 k! f" ?2 A, c W) qINSERT INTO wp_postmeta (post_id, meta_key, meta_value)- w; a2 J! b m- ?6 L) H! R
SELECT ID AS post_id, 'UniversalCustomField'. m- i: k, Y8 v _5 O
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
; v7 g5 K; i# O
# M( e. O# s! a3 q0 a2 N u. J% s2 a" n6 g
如果只需要為文章添加自定義字段,可以使用下面這段代碼:
7 Q+ D* R) B- Z2 Y7 k. E
. a, x# w$ t+ k! w; ~2 ~以下為引用的內容:
4 T$ ^9 T0 f% h/ W H5 H. Y( X+ N# Q# K" U3 v
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)! [3 ?* }; N( v, y% k, U1 `% g% x) |
SELECT ID AS post_id, 'UniversalCustomField'/ I5 E0 ?/ n& w$ }
AS meta_key 'MyValue AS meta_value! d# y+ } z2 H$ e
FROM wp_posts WHERE ID NOT IN
5 C. h$ }$ J7 n8 t(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';
7 S( V9 n; N4 X7 ?- C+ s
% b, q0 e0 @; n; X+ R* s5 d& M# k4 V) W j
如果只需要為頁面添加自定義字段,可以使用下面這段代碼:6 d: `7 m% A$ @7 i- n5 f
7 m1 S$ Q1 J( X7 ^$ C
以下為引用的內容:
- l; B4 G: z& j: y2 u
5 L% Q" m0 Z, f5 @8 ]1 L' j% p; yINSERT INTO wp_postmeta (post_id, meta_key, meta_value)" D7 @8 |; N2 e! K3 M; D6 a6 l7 ]
SELECT ID AS post_id, 'UniversalCustomField'
* v" Y" y1 N8 Z7 V8 l4 RAS meta_key 'MyValue AS meta_value
2 \2 Z0 k, f' j! ]4 T+ nFROM wp_posts WHERE ID NOT IN
3 y' k9 a: ~. g: c2 }0 t(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';
$ a' a$ L# h A) m4 ]4 K" A! u/ `& _, t8 D4 N
: a7 s# t9 ]5 q8 ^* q# ]
, b f) |2 {$ ?% g 刪除文章meta數據( G g' h4 T* M3 A0 z! }
$ B9 d) F5 L, Y2 Y* R, q
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。3 S; ?( ]. `0 }: r& i. l
9 d8 ]; ^; o& n$ |% l5 P以下為引用的內容:
* `0 D+ _2 ^: j4 W. Q5 rDELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
* P) G' o- \! ~! E$ V c! @$ j: ^6 `1 c) u
6 ]' x5 }4 S$ G( ?" Y 查找無用標籤! u" z4 P2 o+ @) I! M- Z
8 p) M8 a- W9 |# Z$ u6 F- \
如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。 F5 k. {1 c+ m: f/ b7 x$ ~
+ I1 D- @) l4 {* h+ o- \; ~# o
以下為引用的內容:
2 {0 o# R1 w" x4 a, w* ~7 O% |: b- I; C* G P
SELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
/ F( N! ?' P s& NWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
+ p* H& \2 s" X+ Q! O. i+ M& J5 Y, ?
9 J0 {, K' Q: P* e, T+ J4 A d 批量刪除垃圾評論+ V7 b# b$ E6 f9 u8 {2 t! ~
& z2 I+ _2 m0 J5 j+ j) g: |
執行以下SQL命令:) i" ~7 }8 h5 y" ~
3 N, Y/ F1 y- E7 ]: R; X
以下為引用的內容:8 L: Y* ~* ]5 x! |
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
2 M$ m1 u% p% f( {* _9 r
1 i! Q) n' n t3 l! q
- [0 F: f9 n( a3 E0 W4 j. \( j% k# V6 s0 o2 J0 P8 u; h2 `' L9 q
批量刪除所有未審核評論* w) z4 g: t. Y/ Y4 H3 {' M
8 `+ A+ b0 P$ X2 e5 @; M$ }: R
這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。
$ G" T, ?4 A7 p6 B6 b j
5 n9 O5 u% I! |" E" C以下為引用的內容:
: V6 b d1 c9 QDELETE FROM wp_comments WHERE comment_approved = 0
" d5 Z$ G7 E* m5 V) n' i5 r `1 [5 M3 k, S
) f" R6 q+ }( _8 i4 E
禁止評論較早文章& O q$ ?0 P5 ]5 M3 ~0 R+ t
5 W5 f5 f2 W# E( ~
指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
2 Q4 O$ k3 \5 C4 K# K/ h$ T9 H* G! O) q
以下為引用的內容:" S4 q% `4 C: V0 E0 p" w
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; 9 M; x) X- L) p6 ~5 F" o( y: |, Y: g4 ~& a
5 z; |3 I1 h$ p
3 f, E; w3 {2 H/ h: X 停用/激活trackback與pingback
0 X' u6 d. k( l# ]# f, f9 {. m
' a' }" J7 }( t0 H 指定comment_status的值為open、closed或registered_only。1 J9 c. u* Z+ l2 k% T) @+ T6 `
0 M9 g# W8 e# J2 v* l
向所有用戶激活pingbacks/trackbacks:
: `; s9 ^& U$ i/ y
' k3 _! Q m. h5 y, R1 k以下為引用的內容:
2 U _$ A- E2 U! XUPDATE wp_posts SET ping_status = 'open'; . H3 V5 |( d# B; e
g9 O6 R& a/ n! t
L7 j" ]7 b6 J/ i- L
向所有用戶禁用pingbacks/trackbacks:
$ U }' P* ?$ ?& C. R: [# A9 L$ Y/ N7 S7 F- b2 n' V; e! ]
以下為引用的內容:
* r( h7 m6 O) s V" i$ R0 dUPDATE wp_posts SET ping_status = 'closed'; ( d" l; H1 X+ j+ u! Z
4 E8 Y# A: ^. p) D6 K
+ e) }1 A/ F8 N. {1 I
激活/停用某一日期前的Pingbacks & Trackbacks" n& W) v4 ^) X7 s
8 e* H, {" E$ x3 O% M( D0 N/ l% `
指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):. }8 w- j4 _& q9 X: B1 u0 ]
; b2 v& ^3 o& c% r( p以下為引用的內容:; E* k2 ]- U9 b. w* k
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; Z8 T3 j# u' J: Z# p; S7 \
- E. ~ F( d r: s1 z4 |6 r
+ J" u; \" o B _) K( o1 _) G 刪除特定URL的評論
% [) e* {6 T6 \* d
' K% y* v. n5 u9 G+ r! f/ o+ `! q 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。2 [) ]. }, \* |' c) b4 x$ V
& E. V. P' _! F, O9 f% w2 i! V8 f
以下為引用的內容:
/ U; u `* P: A# n( D' c: mDELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ; # V5 |; }& Y) B. {% H! L
3 Y; `# w* D( B' f% R
' {- J) F2 ?* B Q- J1 t
識別並刪除「X」天前的文章
( L% m% m6 k& z- H o/ T- s9 Z. W, x0 ]6 S
查找「X」天前的所有文章(注意把X替換成相應數值):6 O c7 _, M( b/ n! V
3 Z+ k5 p( Z$ |' c ?以下為引用的內容:
" T. t7 d4 M9 d0 l$ J3 x2 P
/ Z- a; n- W! b1 K$ C' A) {SELECT * FROM `wp_posts`
8 p' d, B3 w, m/ @' O7 }WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
" x( M' K A. _3 M* m- R7 M/ T, S$ C9 J6 u
# p1 t2 [2 X/ W6 Q/ p- A4 q& _
刪除「X」天前的所有文章:
" \2 M+ R( L( ^
* T- J8 v( m- Y8 \7 E9 H" J1 U以下為引用的內容:
/ i" ?" k: o* e& W, B9 @: n8 P, o9 y' S8 r
DELETE FROM `wp_posts`
! j5 K7 T J0 vWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X: O/ D0 H2 w# b7 r% |* z7 X- Y
) [! H. `3 Y3 c, B T4 | r% K! Z9 a
8 a5 _1 B7 U7 S- P* m7 ?* k8 Z9 M
. ]. P( G3 v' s1 Q 刪除不需要的短代碼6 `- C- b1 m5 N. k3 n0 {, D
9 S$ b a% A' {' \ 當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
2 ]; ^& _" j0 B8 T8 ~0 [# ?+ G, h x' _, u
以下為引用的內容:
. d" t9 X+ n) S2 G7 o8 V U) eUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; : @" ^1 M- ~& F5 b0 Q6 j
+ i# G. S' k0 D0 T3 z1 W
6 P" Z6 d L4 e$ E: H) t 將文章轉為頁面3 J0 G. k% s6 x1 ]
) F% y2 v4 _2 ~* A! K
依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
) _4 S: F9 E5 @9 S5 n. L. T- \7 E B
7 ]$ x0 l* O5 e以下為引用的內容:% c" u$ o7 D# |( x0 l; [* t
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' / g; }" J1 T ^+ q
9 X- r1 B( [" O6 D" D5 ~3 y, P, C" A: C# V% @ ~# w a' L$ x
將頁面轉換成文章:
( n# Q/ c7 }9 u* W$ s7 a& C" V9 s# K2 h9 e) q" P5 l$ {5 Z( q
以下為引用的內容:+ d. Q+ \7 n: o! T
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page' 8 j& N) N' t* G) I
0 E: Z* |2 r/ p, r7 I, Z7 b! h
9 o2 H$ d) F( |5 T 更改所有文章上的作者屬性3 n9 F' s9 E- n7 x
4 Y3 B1 Y5 o& E/ A7 U3 A 首先通過下面的SQL命令檢索作者的ID:
. q/ I3 C" |5 B" y/ Y/ z; w) G$ i9 ^2 j2 P
以下為引用的內容:
' X, E( B7 t5 i, `* kSELECT ID, display_name FROM wp_users;
" I; g3 j5 y& Y0 K( H% ^* @3 d/ S2 K, K2 v2 e2 r. v
) Q8 ~' G1 ?! I' h: L3 z; d) |
成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。3 T) B6 [' t% B) `
, A( j! x. P: b
以下為引用的內容:
! K! T: s1 Y& D, h$ J: S) C7 ^3 zUPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID; 3 g" C1 J. ~( N
! r& h ^, k- T3 m7 @% M7 b8 [2 N% e
批量刪除文章修訂歷史
+ v3 z; }: R, f: i$ \0 f6 T1 J* y; b1 F) t8 Y# T3 Z
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
3 U/ c9 l8 o2 ~4 T" w- I( ?# l& k* x. D( K
以下為引用的內容:
1 C$ j4 W8 m3 K8 l! CDELETE FROM wp_posts WHERE post_type = "revision";
- a7 ^) P3 g' E# Q- p/ @ _, p* R8 l y' }+ O) M* g( ]; Y( X% Z
/ h- Y) p9 X& X$ G h" e6 r6 B! ]8 p
停用/激活所有WordPress插件8 }5 K- W$ n8 ~7 C
" ~; B" v _9 \: ]2 F3 E4 `: x* M
激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。9 F( ^! k# t" F
. t3 c& k/ V( e4 v4 {) u
以下為引用的內容:" f# G, h0 ~& }& I* J1 h" b
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
9 N6 G: J% N! d( @: z3 E; L) k5 }7 C( c, x; q& m. T
9 Y9 o. m' c. _7 H2 s2 X 更改WordPress網站的目標URL
; m& ~8 e2 I! b' C4 G
% O7 L C8 P9 y 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
" o" c; v4 j" S5 r3 V
2 }5 G* l% A+ L5 G4 u$ R 使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。
+ @) [ k& W2 \* H& I
/ R# X9 d3 s2 w5 `3 Q 首先:
* d; D/ q. ^3 w, F1 `5 I5 R: f( ]* v! _+ R3 D4 k
以下為引用的內容:
$ j- `" `7 i. t( I- ]+ L& tUPDATE wp_options
) l1 j$ [2 }. a* zSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
W/ H6 q) A* C( c7 ]' v4 qWHERE option_name = 'home' OR option_name = 'siteurl'; . x- ]7 ~; u/ z$ G) _4 O- ^
& h. N& x2 L( H0 R
8 c2 D2 g6 C$ |7 | 然後利用下面的命令更改wp_posts裡的URL:. H; J# W1 d/ y& {: m
/ h8 N% q6 b& d! Y I7 R: s
以下為引用的內容:* a' ~* N4 I9 C$ [( O1 P, N# t
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
6 \# `9 N& S) A5 K# P% ^1 V' o, w7 P% P
& W2 f# I8 z' i4 j4 V
8 P/ ^9 {" R- t 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:( ~- Q/ Z0 b- g, r- b- ?$ x
` | u1 E! K8 M: j以下為引用的內容:
7 p* x- s0 E( S0 }* AUPDATE wp_posts - U& Q4 h4 J/ [! l' ~/ s, T
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
7 ^1 K) `3 a8 ]- K4 g% _2 H
1 t0 {# z9 a; j0 S' A% Q4 c2 y$ D" R
更改默認用戶名Admin
% ?) R+ ^3 ~- ~6 x$ Y( X# X% M9 G
把其中的YourNewUsername替換成新用戶名。
" j3 V j; s1 ~# F5 D0 f4 t- k
9 z, d1 b' }; u! k4 B) Z以下為引用的內容:
8 Q" ~, u N. F/ b1 XUPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; C" U8 c# Z G
: J5 Y+ v8 K0 r- V4 ~+ M, Q* `+ m
手動重置WordPress密碼: d& }( x, o; \/ v6 Y7 X/ S. Q8 J
* \! B/ d: ]- ` n: S4 a 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
I) ?9 V) E, X& u, D
{% `1 N1 y/ S/ {- J以下為引用的內容:
$ F2 p# F9 a% NUPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD')
6 V0 d, V# F# r; P% {WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
# x/ s) N' r; q) A: f% p# j' m) |( R- j% U
( H% T U& A2 q7 J5 t" O) v
搜索並替換文章內容
0 ]8 l1 Z4 S5 E& J. h# D! n( L( O. }
OriginalText換成被替換內容,ReplacedText換成目標內容:
7 N9 ?+ o' Y4 e3 c! M3 s2 x* E% s i; S- T o0 g% I9 o; C
以下為引用的內容:1 t- H1 j* t# o* d5 Z# x
, H+ r5 d6 `( J" C8 OUPDATE wp_posts SET `post_content`
l$ I1 C; I" w0 z( _7 c, W+ j= REPLACE (`post_content`,
" T8 Y7 @. S, a. N# A8 S'OriginalText','ReplacedText');* P* g% z; W0 r3 u' f
, B3 M" G3 x- n- b
# y. l T- o% }. _ [/ D
! `7 L0 x. G' f0 Q7 }! P
更改圖片URL
) n1 g+ }1 o4 M: e) ]3 X" d _. Z7 ]
下面的SQL命令可以幫你修改圖片路徑:
/ G' J/ u$ m6 \7 c' I% ^9 ?' M! [! j
以下為引用的內容:
5 ~4 E; h5 J1 V7 `2 J% @: }7 f# T. _$ S' P; ]4 H1 v M+ }) H; M# u
UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
+ k/ t: q* H l'src=」http://www.mynewurl.com'); |
|