WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
z9 c' _1 k$ i# Q5 @- X9 l& a X8 N) Z& s, X
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
" B H9 ?% Q; j4 h" h1 [# w. H, L+ {$ a7 _3 e
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。
& ^- _6 T5 R m7 r6 {% [9 J; V" [) b
事先備份
# y4 W( W& v( x Q1 `& e
$ S8 x, o% N+ t1 F6 h WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。9 V" d1 x1 ~5 z/ w" r" W
% s( `3 E% L) z' m9 J, b: L1 u
為所有文章和頁面添加自定義字段. p' j; h, _2 [5 Z0 p7 Y
{* o2 s+ s8 {2 n+ d! j 這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
; {+ I7 Z! t, g4 r/ |, Q/ w/ p8 _( Z! l& E! I% I9 ~- N7 o
以下為引用的內容:4 o2 A: ~0 k) |* K
. A6 g' o2 ~& i( N6 R bINSERT INTO wp_postmeta (post_id, meta_key, meta_value)! L* a( @2 [/ |2 d8 X# q1 I
SELECT ID AS post_id, 'UniversalCustomField'* g; T& P" \. ]0 j( @$ K
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
8 w$ _0 N% I" |$ I# O% B
. f0 J& k4 y3 }& r" C! z9 `6 X) ?. {: T5 L
如果只需要為文章添加自定義字段,可以使用下面這段代碼:
0 H1 p& U, H; U! ]% Z( Q- a1 y% \7 b
8 g2 W4 m9 I) Y0 B* j) N以下為引用的內容:/ E2 k- b8 o# o
3 o& r f# C+ X' J
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)' G8 p5 b2 t$ t& u, H
SELECT ID AS post_id, 'UniversalCustomField'; {0 i5 Z' n* i4 j
AS meta_key 'MyValue AS meta_value. S' p% b% T$ P9 b* a
FROM wp_posts WHERE ID NOT IN. J6 g6 _* }# R5 O4 Z
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';
& ~/ i: h u `! G w2 z/ [1 W, d' i$ U" H
! o5 ]; c# d( S9 X
如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
4 u; j+ k, |+ Z3 _$ @! F. s* ^: Z J2 B- a
以下為引用的內容:
: {# M. Z+ G) K; N& f7 @/ W! d
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
1 Z3 k$ K# L( x9 |SELECT ID AS post_id, 'UniversalCustomField'- d8 Q" J M1 i/ m: o, f
AS meta_key 'MyValue AS meta_value4 G. @9 `: X+ [& S" M- i
FROM wp_posts WHERE ID NOT IN
& D3 K& q" @$ V# o# w(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';9 m, F5 P$ o( y& V, X9 p' n- T+ P
. X9 Y0 P+ ]% J7 Z
8 _' u( U2 | G
9 }2 r: ]8 k- m; y 刪除文章meta數據- A4 `) [0 y+ y" x- R; v3 }0 y5 ~
; y5 w. P- z6 v; H7 E0 n6 D9 n2 D 當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。
' {5 r5 G& j2 G6 t9 F* G4 n2 K; [( ^1 t
以下為引用的內容:
- G% d9 f! x. L& j& tDELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
& D( l+ G# H- Y( F# `- b& ^2 i
+ e% k' C* P) j$ @
% M3 U3 P k/ J9 N( L8 T 查找無用標籤% a/ Q0 Y" E; [5 o. @3 O$ T
) v1 H2 W7 `; @6 z E6 i; h
如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。. m R/ R" c/ C4 N, t$ F# L9 S
6 z) I4 O$ |/ F. x$ J, h以下為引用的內容:
1 v" {) T% x( } z. c: w E
0 }/ h0 Y/ m: g( j/ h9 ySELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
" A+ j5 b# E+ a" JWHERE wtt.taxonomy='post_tag' AND wtt.count=0; 2 h) Y! `$ [ I# n7 _3 ^+ [
( A6 G9 q. T1 ~& p9 ?* Z \0 y+ Y$ `! d8 O- r
批量刪除垃圾評論4 W) @/ V4 ~, w# s, c) G# X ?
- ^# I( t9 J+ g# j' `
執行以下SQL命令:
4 r1 }' Y7 u* z. M% z
" W# v, E) c8 ^0 P5 A以下為引用的內容:
+ P: |, S; h2 u+ z5 q2 v, tDELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
5 s% k) r. F' C, F
" A# a* o) ?0 K1 j# W2 ~, B! g8 z' x1 I, Z( k
( \, X- Z! M! N% l6 u# J1 J: B+ ?% I 批量刪除所有未審核評論5 V7 [3 s: L. |9 } c
% ]& `! u9 S) [6 T V, q 這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。, I) Q1 k1 `& D+ S. `. h3 S5 Y
$ j- D3 C7 F8 ^- e, v
以下為引用的內容:# {9 m/ F1 M% { F0 s9 Z( Z# [
DELETE FROM wp_comments WHERE comment_approved = 0 + O7 [+ R4 R- A
: r x: }: X2 b1 ]/ z
6 X" y4 p8 \2 |. }4 d' ?: R2 ?$ K
禁止評論較早文章
0 L0 Q; o7 @4 b6 x+ h
, b- ~; c1 }3 o* r 指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
" c( W: K, w* K: `
+ e' S. H9 Q; c9 e' a# e9 ^- m! j以下為引用的內容:
1 [9 w2 [2 A. k! d) J$ n' J" i" F0 B1 rUPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
! @) Y: |3 ]4 }3 a7 I& N# D6 O
3 z+ o* r7 N4 \( F+ c" u5 m. D5 m+ q
停用/激活trackback與pingback8 h8 i1 _' E4 F
- `5 U3 S8 l1 r" Y$ k+ z' e 指定comment_status的值為open、closed或registered_only。
/ v& R- p+ t z1 _
% C6 }* s$ I8 d- [% V4 ?4 Z7 J 向所有用戶激活pingbacks/trackbacks:
* }9 z* y; Y, d: Y9 ~" ]# D" O4 U. n% |3 ~5 w" Y" `: f
以下為引用的內容:
; x3 z8 [& \+ I& d4 jUPDATE wp_posts SET ping_status = 'open'; + Q8 U+ V- X3 w0 |3 _/ {
0 ]+ I3 Y& C5 F: }; M1 I0 @' O1 q
向所有用戶禁用pingbacks/trackbacks:% _+ g8 p1 {5 w8 T
" b1 b* P9 s+ e9 ^" v
以下為引用的內容:; S- H% x) \2 G8 G( w+ \
UPDATE wp_posts SET ping_status = 'closed';
# b) W, Y9 R5 V' Z
8 G) V+ b$ U1 J
$ p7 f2 Y( N1 g, m+ n; R* q4 H 激活/停用某一日期前的Pingbacks & Trackbacks& D5 q. @! r; g | f" H0 G a
" h4 P5 ?4 n; `2 X- m/ a
指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
1 w$ \# _% O8 ~, y2 m- O8 f/ i& U" f0 m4 F( \1 i9 A
以下為引用的內容:8 {; \$ q# v- y" m. Q$ {
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
$ {& f$ G0 P5 q5 _. c; h
1 s& O5 W; a, H" f; o5 _! o! r9 V# B9 W1 Y* Q0 \: y
刪除特定URL的評論
9 O) D5 _; o, U' ^( S; T7 i8 c/ I* ?
% L* `/ X$ }' w0 M 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
( T/ x! C1 A: G! q w3 L6 s
* Y2 `7 H$ w. X( _! |# D% ]以下為引用的內容:
/ `! j) |# ?; W% {+ {DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
: m" `( M* S0 I- V! x1 C4 [( ~* L1 R3 c. L; K1 A4 f
" o) A* ^; Q9 q$ o2 A 識別並刪除「X」天前的文章
9 ]1 _- k4 G# _, c# F- G
( ?0 F4 l8 `& c1 Z! q% Q, p, q2 s; g 查找「X」天前的所有文章(注意把X替換成相應數值):
! C' x. i, |$ z" O& s5 [. _3 o/ L& n! A1 G0 k! k
以下為引用的內容:; }9 p: P+ [+ }+ @8 @9 J" `
& R) E$ S) a2 RSELECT * FROM `wp_posts`
+ v/ L/ F5 s/ wWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
' P2 e% ]" D" O5 M6 f1 R
|( v* J" y) m' ]; u- g
+ b# N0 v r7 \! O+ _ 刪除「X」天前的所有文章:
) Q8 s1 k4 }5 S( v+ v! D( Q9 V: e2 ^& S
以下為引用的內容:0 E# k5 r3 U9 N+ z9 D8 `
$ z+ k7 y6 C# J3 s4 R2 v/ S$ qDELETE FROM `wp_posts`6 s7 M% d/ O5 }4 n
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X' R) \& c0 b7 z- I: I
/ ^, k$ ^4 V/ @% b9 [
4 n3 o8 K! B' F! L; W; \8 g1 X5 x5 P5 n* y* r7 E
刪除不需要的短代碼
+ m& x7 @5 u' a' E* {+ k7 K& K) r% V4 M; ^& D- J \
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
1 m* o" t, v w3 W# n& J$ P/ ]/ e. s) w$ v3 j
以下為引用的內容:, V+ q5 |3 r, }4 F' W
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;
' E0 o" s' J+ E! \# t, O1 ^; @7 y* D. K; }( H
7 n0 j8 F( n: c9 r8 Y9 }6 b 將文章轉為頁面8 w+ }+ |9 e: e4 d5 B7 r- p& d( V) A: @
0 o" \7 H. R; a( r
依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
+ k/ m" b9 x; N$ ]8 S/ r! r+ C* t2 r- }1 ~) @2 U$ {
以下為引用的內容:
4 t( H/ c- h1 d% EUPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' ' m& ?! e* y. n5 u1 k
3 X }( g# b, t: M+ ]5 n# M0 W" U+ T* p% V; K1 s5 Y
將頁面轉換成文章:3 g" F( H) j' V! E2 o
3 {1 k6 U6 \0 k+ q" [3 ^
以下為引用的內容:8 M, w8 M0 P. ^+ r
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page' 6 G u7 n- u( t: ~8 k# c* E6 w
" \+ i; V3 G. B. b' _7 \5 h0 [8 y
2 P5 f; I: g1 ]+ V! g7 J: l
更改所有文章上的作者屬性3 P" |1 m8 J8 m3 s/ e2 q( ]
/ j0 K4 ]( C0 }) k1 t/ Y% L& O9 W 首先通過下面的SQL命令檢索作者的ID:; i) v) J/ y7 _$ M$ Y1 Q6 |
1 B' t% z8 @, Z3 T6 F) w( g以下為引用的內容:
- m c2 l% S7 ] Z- b, YSELECT ID, display_name FROM wp_users; . F! U- d( W7 r# H$ e2 w/ E5 R
& ^$ @5 Y+ z9 W7 ^+ D2 m/ U6 K6 q# G3 Z, L1 i: Y
成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。4 p6 I; D5 X, H" s4 t% d- d
) e2 [! g" b* n以下為引用的內容:
! m$ N: _& T/ K) a2 t A3 cUPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
" ? N. g2 \1 y9 F+ _
" K% {+ D ]2 R) Q" _1 I1 O
* @; g# t) q0 V- l* c1 ? 批量刪除文章修訂歷史
" E+ ^7 h# w% I' i/ S2 e7 x$ M% r$ u! b0 n: p$ f- n' R
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。$ C9 [5 F7 s1 D
0 H9 T, a: w: d! J以下為引用的內容:0 v: C/ ]2 j% i9 l" r; J
DELETE FROM wp_posts WHERE post_type = "revision"; 6 B8 U8 v, r2 U4 t) M/ x
6 W9 |7 F4 Q. O
% V# z x: J0 \3 K$ l! K% I9 Q 停用/激活所有WordPress插件
9 K. o! R3 g; R# l
9 u$ S5 c4 F9 M/ L3 M 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
2 l9 |8 @4 f6 M
2 o% F7 s5 K5 A以下為引用的內容:
8 p& f/ s( \" D* v9 dUPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins'; * W2 o" Z/ k) K+ N9 _
' w' y+ f& T9 D( I% \& v
" {$ |) u/ B/ Y+ `' @( U 更改WordPress網站的目標URL
& N1 G8 B3 K( U6 n2 ?' B5 d2 I0 C' \5 X0 g
把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
C. I% `( r8 E( O" x& t
9 ?/ }! w( N3 b2 j 使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。% g- f' }) F+ I+ Q8 Z9 A& W
5 Z f6 d/ G1 l- I$ S: q
首先:8 I8 w, q% \2 |! a" \7 Q
' Y3 \4 Z$ [; _: X
以下為引用的內容:" e* Z8 {$ [, P& v) k
UPDATE wp_options
6 R8 l( D0 |8 z3 |5 GSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') # _. k J0 C8 u- Y6 H3 x/ z5 v5 D3 W
WHERE option_name = 'home' OR option_name = 'siteurl'; ! b% g- [6 ~. e
! T! z. s M8 Z& w
+ y) ?9 C9 f% {4 m0 R, G1 m, K) p
然後利用下面的命令更改wp_posts裡的URL:
# N, u# ~8 I+ T+ }* t2 o* ?7 p: z
以下為引用的內容:
' x5 f. ^# \6 JUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
6 Q5 p2 O; B# p# D
. h- @" p) p$ M* S* A! A+ X7 Z4 R1 K- t8 J1 ?/ U1 N% \( _
最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:1 J g/ R& A8 t$ r- _7 j5 H+ P
: M1 C' E7 p- ]- Q) J以下為引用的內容:( R& D5 Z: T- ?; c( {( |
UPDATE wp_posts 4 Y. I9 w w! p: ^4 w9 ^
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com '); ) M! d9 f6 Y" W# R
$ s; p0 A* F4 \7 t6 s' ], l. _6 G; z" b6 k7 x q+ @1 K4 p+ F
更改默認用戶名Admin7 g) P2 X. Y. ^ T/ w
2 t4 _. c+ K% ?! u. M y8 ` 把其中的YourNewUsername替換成新用戶名。
7 i; s/ H6 Y7 |) P: ?9 ^" z( I) g0 k, d. Y
以下為引用的內容:! B0 p" `$ x1 ?: d$ e6 I
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; 7 f$ A9 D8 F8 z
5 R6 V6 _. Z) R/ q" M# @
0 O8 _% I& l8 { u' | 手動重置WordPress密碼; {9 X) S1 z P4 [
' v; `# w) y n; Q4 B- R0 a$ X 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):- [5 i p) _: K; y
4 b) G4 Y: y! k* k% ]
以下為引用的內容:+ a( K& ^! h' P; G9 u0 x3 x
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD')
# A9 L$ O) R# \WHERE `wp_users`.`user_login` =`admin` LIMIT 1; ( n2 B+ `3 [( Z4 z
$ k5 [+ I g/ a
1 t# l8 y5 t$ W" D 搜索並替換文章內容% y; ~/ }+ f5 A
' ?$ U/ M0 q# G% q
OriginalText換成被替換內容,ReplacedText換成目標內容:, p4 ` `/ X6 X9 F- N
" {! v* g; [6 e* @7 K$ w3 [以下為引用的內容:
6 `& c! E) Q; i2 a$ }
8 B, `* l% @8 M- V7 SUPDATE wp_posts SET `post_content`6 E" e/ D8 _' N8 m/ z5 A* y& I8 K
= REPLACE (`post_content`,
/ O4 l# s$ z2 |$ m) F. ]0 M'OriginalText','ReplacedText');& _; E8 E, y% M( x% ?
7 e; \5 r! a* h/ ?
2 L; u6 A7 X# _. N
5 Q, t" ]5 n6 i+ x" I9 I5 U 更改圖片URL! M0 I+ Y2 w2 ^+ }! Y& p* f
/ L( y r3 M* r% A. U2 R
下面的SQL命令可以幫你修改圖片路徑:1 \! W7 ~( G6 U+ {7 d
4 F. L* l4 n+ |0 d
以下為引用的內容:# |, d# l) u I" ]. N8 {
$ k }/ v( K' O( X5 pUPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
d8 @5 W G. `( @' K) y9 z'src=」http://www.mynewurl.com'); |
|