WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。# x: ?# I) l' t# a0 V. w, Q
- U0 w$ T. h" K6 v5 d& ?
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
* N% i) e- E0 a& K; C, `
1 R& |5 L7 U+ {' f% l1 u 下面要介紹的就是一些省時省力的WordPress SQL查詢方法。
& ~" ~, G" \ g' k4 f8 m3 X6 H
* J. {: L. Y' U) R" l7 |9 [ 事先備份% M" o1 m h8 Y( @8 f! n
: F1 R7 Z$ g' _# D/ W) B' K+ p
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。! m( {- j8 [! E! I" ]
- i8 n$ a( e8 P4 [+ c" P6 L5 v
為所有文章和頁面添加自定義字段
2 ~1 ^! X( E; E1 p5 q* h6 m' N/ U9 V! b
這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。/ f$ x3 A( e2 s; h
2 l# O+ k* ?3 |! c以下為引用的內容:
& ^) o, x3 \$ U) \. G+ I$ v9 @. `/ x2 J0 D5 L3 `
INSERT INTO wp_postmeta (post_id, meta_key, meta_value) U _4 Y8 J* {! h
SELECT ID AS post_id, 'UniversalCustomField'
! E% c* L: ~2 eAS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField'); ; b! i" T- [) I2 A* H6 F
, `' p% K: C7 a1 L0 W
, s3 L8 u% I; ?3 R 如果只需要為文章添加自定義字段,可以使用下面這段代碼:
0 d" K' p# _# W1 }! h4 n) y, t2 D* O" m3 K- e( z1 M7 a
以下為引用的內容:3 h+ p9 t: ~7 Q3 ~
: e- O9 Q" \: M+ [/ xINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
h; m; j U R( ESELECT ID AS post_id, 'UniversalCustomField'
/ j7 F& R5 J$ q! NAS meta_key 'MyValue AS meta_value
6 x6 \" B4 v$ C8 |FROM wp_posts WHERE ID NOT IN g; T3 s% M- H& V8 l/ z" A5 O
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';
+ B, q+ P9 J8 B j. Q) Z9 D% O ?
' F4 t! B+ m C- N) j6 O
0 ^. z4 Y n3 n 如果只需要為頁面添加自定義字段,可以使用下面這段代碼:! R4 z% L7 S# o4 V4 |1 K4 z' Q
" ` T5 W1 s- |/ k8 q. I' y以下為引用的內容:) }/ h7 I% J$ M# L
4 C' A1 D3 k5 o4 ^5 z9 Z" n
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
! w! W3 N7 n7 w7 s2 k, a: z3 FSELECT ID AS post_id, 'UniversalCustomField'# S M5 N, B1 W6 {# d C0 h5 m1 C
AS meta_key 'MyValue AS meta_value2 G5 i& ~2 I8 K/ I+ d, v7 {
FROM wp_posts WHERE ID NOT IN9 F' T0 w" q' @+ L- M
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';5 I0 c: N/ g0 b4 u
' a$ P" Q2 W n. g- v" C" _" w
9 N0 c2 M) `- `( o* e3 y8 e; y- q: ~. G. S; x5 a2 g
刪除文章meta數據
6 h- ^% }* S& ^& `1 Q6 ^2 T& `; u+ Z
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。 O, D2 A# L7 |
2 q* W* U- c2 s, a+ d- g" l以下為引用的內容:) D5 j. i# Q J6 O& L L
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
! l+ R9 ^9 ]! L1 Y% [! a3 r1 s! ]
# O* f, k5 H& r, z' u
" ^6 N- F! W4 m1 I/ {6 A 查找無用標籤6 z+ {# q5 C& |, d% c
9 t$ S. b x5 o- D
如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。+ G0 x6 n1 f1 ]$ H0 o
* Y4 k# { u" c/ y0 n以下為引用的內容:' t' F) O5 R Z: ^/ F
8 f) Q; f6 M0 k% S
SELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
* k! E. B) x1 i; Q# h$ iWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
# ~3 n$ d( f) y" x9 V; g+ c" ] [: M8 h; S1 w+ \. Y% d
& t5 X, [$ U! O% J 批量刪除垃圾評論
, s9 S" a/ }3 T1 {& I
! @& C; w! ?8 L 執行以下SQL命令:$ ?8 O+ D* Q+ q- A
; p5 H3 ?' Y$ {& B" f以下為引用的內容:
4 Z/ O% c t9 l9 [: q/ QDELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
( ]2 u7 d) y2 O+ o) h& ?$ q* P* h% Q
5 {9 M, _7 P; @, L, t. F# p
/ _7 w# i2 l9 ]% L3 v1 ^* ?6 b- m: v/ _; i
批量刪除所有未審核評論
b, Z, W) F0 s ~- }! c9 {' p0 [( e7 w6 c7 L2 A$ ?: f
這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。$ u+ N* }) w* u7 I* ]8 @$ J( M" W
8 U _$ i* Y- i0 K( n
以下為引用的內容:# `5 _& }0 ^1 d7 e, |. ~( b
DELETE FROM wp_comments WHERE comment_approved = 0
! c/ W& ~1 @" I3 b9 q3 a" m) E8 [$ x+ p8 P
m2 H# v+ L6 ]& f4 Z6 O
禁止評論較早文章
7 h+ k2 O$ Q+ G$ E
' n# B% g+ J8 S. E q; n6 [" J 指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
4 i" h* a5 P. Q& c7 d1 r; P' Z7 e* f
以下為引用的內容:$ R+ m& G; {6 p; @- w+ I
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
+ C4 ^. I1 Y- I
2 i4 E- i8 |& L4 L- u# B( ^, }& F8 v, v! u, o- w
停用/激活trackback與pingback* u. E" g) w, i* d! A
/ u4 z( g/ o$ z) R
指定comment_status的值為open、closed或registered_only。0 h+ w5 \, ]$ e, D8 |9 ^9 m& B- o
: p* c8 h! q: e, J 向所有用戶激活pingbacks/trackbacks:
' F- P$ t" j) K5 X: G
; R0 h6 d( s; m以下為引用的內容:
. t0 K5 U7 y" D# v( P& L9 p3 B' rUPDATE wp_posts SET ping_status = 'open'; 7 ^2 Y& D: Q0 H; @, }
3 c- `0 {9 j+ B& l3 r( c& j8 G( n6 X2 u) i5 o
向所有用戶禁用pingbacks/trackbacks:" J8 _5 ]4 O9 F( ?
1 S, A( a% w5 `/ h
以下為引用的內容:
7 e+ E/ Q1 |" V2 T1 Y3 V1 B" D7 jUPDATE wp_posts SET ping_status = 'closed';
3 [6 n; c+ V* x& Y6 K6 {& y6 _3 _8 P7 e6 M9 |
: @/ A7 w# n" H$ a0 Y7 o
激活/停用某一日期前的Pingbacks & Trackbacks
L$ `* T3 T, }9 n
, ?+ H- L: f+ {) J: O 指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):* j% ?* \" ], T# Z" L% R
+ R7 M+ g) k! T# Q$ C' u# {2 Y以下為引用的內容:
0 ~" c) N6 S! P( R6 Q5 iUPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; # v- l: r- Y) h- I: B3 c
6 [7 N3 G; ?3 V5 b" h
7 @6 `/ ?, ^( v' t- c
刪除特定URL的評論
! c! o# k; x9 X! ~ k' k
8 B! j& q7 R# Z9 j) i+ t o! _8 I 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
, G' m# V3 {: l/ V- R
; Z( x2 C# A8 P" N2 q以下為引用的內容:' }# ~. G; @+ r" g
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;
. K _. L' l" z; X: m9 G" S; i+ O& ^* C
7 w! W( K2 P3 t. @' q( U/ i% U
識別並刪除「X」天前的文章
5 @- M: p% ?" r$ e$ e- c+ Q. _. M1 n0 x( [
查找「X」天前的所有文章(注意把X替換成相應數值):- p9 y0 J! \! w+ p
7 {+ A5 S, `! C. O" r/ `1 |
以下為引用的內容:
: G: Q0 \5 N0 o4 X+ y, x) o# \1 ^4 P7 a: M2 I S; M0 l1 ]
SELECT * FROM `wp_posts`' B0 F) f9 j, F" Z8 ]
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
: X0 t0 ]6 q( \. g, s8 x
" _( O1 E: J( v& O! m3 m% F. n# m( X. _: h) @0 q
刪除「X」天前的所有文章:$ i1 f8 T9 N4 Q3 H6 a) y
- y- m' |9 |" F7 }8 w- a6 l
以下為引用的內容:
2 s1 i9 b7 U% I" J8 B2 T
% s9 L. h m+ M2 c$ e7 ODELETE FROM `wp_posts`: w: A5 l% S" n5 W
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X4 ~. X( S5 q# V6 q& x
* @- W6 \9 P5 E
3 k J/ [. s' D2 k4 ?' G, ^/ `' _, m2 U; h1 `) H2 }
刪除不需要的短代碼
% i9 j8 \- ~! v& X0 \, }, T# c: M! d' m m& \
當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
5 ^' |+ E3 R# Y
, ^' T5 m0 D7 ]" g# j; g$ T以下為引用的內容:
& {4 o" b( V2 f" ~5 fUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; 3 ]2 W. W4 o' J1 M7 Q+ Z
$ @% _8 D% l% D
" H% K- O9 t. u0 ^
將文章轉為頁面
: h5 n- b' Z2 C+ z0 P1 t8 h( k( R( e" q3 e7 M
依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:" B! e+ h( E6 K( d5 V
* |1 g& |8 G! l y' `) a$ D3 d, Q
以下為引用的內容:* u; ^' n" e6 a+ e+ C
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' & N+ a! q. C2 W6 U. q( Z# ]! [
' b" o9 H$ a e5 S( b
% q: C+ t" N8 Q- l 將頁面轉換成文章:5 I0 Z: t' a B
9 {% R. W5 j1 ` M
以下為引用的內容:
. e, e0 H/ n+ W. ]% |2 E7 gUPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
9 n$ l' O3 K. U& M- I3 n- p9 l- {
% s% ?0 k( V5 V I3 b; S4 D' i0 d) A+ }6 Q# `" z j
更改所有文章上的作者屬性
$ r6 n+ m/ D$ l; Z1 ?8 C
8 l- J5 c/ [5 ~! g 首先通過下面的SQL命令檢索作者的ID:" @, S0 ?' c! e9 ?% E! E% ^
/ c& V6 v9 Z9 \0 U' o
以下為引用的內容:/ a5 l/ g! {4 q9 }! C
SELECT ID, display_name FROM wp_users; 7 P3 `. K- j9 [6 p7 |2 A& y3 _2 C
% w k5 S5 x( E* S1 [* a
% A6 h L0 r; ~, o' J* u: x
成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。
! `* I/ i+ U1 z7 M# C6 j3 U! A+ F9 k; N) s$ X
以下為引用的內容:. l: v3 |; q' ~; U$ P- t
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID; / B% E4 K1 B, k
) S8 ?, x0 _4 Z5 [
9 @- c/ b6 k3 a& c
批量刪除文章修訂歷史! u" J! V! s% \5 |7 s [" D
( B, j" Z" S7 K
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
4 I! e# A2 {, l' J* P
9 K# L+ U3 G! R6 l# i7 }+ Z以下為引用的內容:
3 a1 {7 S) U1 m# R; V$ C9 p" M8 b6 ]DELETE FROM wp_posts WHERE post_type = "revision"; & B' V* E! L' |. O- F: l
, j0 a" o2 S4 R+ r) Q! u j( H
! \9 @& o9 @5 l: b
停用/激活所有WordPress插件
" m& u4 Q' x* O9 ?: F
) P( P! L, h9 @, J' d3 x8 e 激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
) ~( ?: C9 ?+ h5 O* N+ X$ @# o% J4 O6 C' n- w$ _1 H! m d
以下為引用的內容:! J4 d( b0 E, a, y
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
7 Z1 l1 r9 \( n+ I* c" C1 Z2 K' T7 { M2 ?: W
6 s6 _% E9 b" o/ z) F+ k
更改WordPress網站的目標URL# v8 t5 y- N% ^* X6 d3 ^! J" M% V x
+ a1 ^! m9 n: ~ 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
# m/ Q8 E$ w( S6 u5 |8 `$ K) a2 l' W- j" P. c$ b
使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。
& d; r6 ~/ \' c! u E- v: y) V/ b$ M5 O4 R
首先:
9 p1 A/ R* o' x
& H9 L7 G( V, U. U4 \2 ~7 ]以下為引用的內容:, l! o8 E5 P$ Z$ c2 k# s* T
UPDATE wp_options & K9 G' f0 Q6 a. y
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') # k) i& e& H" C6 g& i! J0 b
WHERE option_name = 'home' OR option_name = 'siteurl';
6 N6 o+ @9 A _2 g g {
7 s2 _/ n6 w) @5 V+ A) @& Z; P& A! D4 S
然後利用下面的命令更改wp_posts裡的URL:
; R+ t/ {- h# U) W; I( z A. u
9 l/ W* \+ _7 t' F以下為引用的內容:
; R% b; p9 y+ g" ]! B1 aUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
& [ c; K5 C: ]' A# a+ Q1 W' W' q$ e2 L$ v" }
1 X5 ^! B- |; } 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:1 f$ ~) w* o0 ?3 K8 D4 |
% m6 l' H8 X9 W% v
以下為引用的內容:- _3 U! {# j7 v3 a# s7 Y$ n
UPDATE wp_posts " t: N+ }8 [' q i' E: s
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
' ^; ]7 Q8 I' l+ V: d( O2 Y8 X4 I5 {3 m+ C, P; j4 ]
0 ?) b+ z; \ i% h2 p 更改默認用戶名Admin
P3 T. z& U# @- r$ U/ `+ L9 i M. Z$ D; G( b2 X
把其中的YourNewUsername替換成新用戶名。
+ l9 Y: p6 H1 M _6 V z
/ G A" ~) T& n以下為引用的內容:
# H; A: F0 ?7 s; hUPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; % V q# X3 C# C6 `/ S* f: w
5 R; q( [/ a0 y' T& q* X' u; C6 z1 i, k( s* n* m
手動重置WordPress密碼
$ R) S) P7 F3 e0 M
* f4 ]3 O% z9 Y$ M2 {( Z 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
6 M U) T9 i: Z# F
* S! l' f& I( L( o以下為引用的內容:* [7 e- ~( ^: ^- h0 R) X
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') ! b; d8 ~ R, q6 O
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
/ i; \0 m; x+ ], Z+ N; Z+ c( J( \- t0 l
. c2 F: X0 y9 k1 K; \ 搜索並替換文章內容) f4 Q$ I" |3 F5 V& O$ U& y5 [* h% B
) D) c/ a4 A& X1 o
OriginalText換成被替換內容,ReplacedText換成目標內容:
/ q# `1 k. `) t0 y- n* Q1 c$ y1 I& s# n% C
以下為引用的內容:0 p' I! q4 C- ?) p) j9 N! \* t
) |, Y( ]2 b" K" M% lUPDATE wp_posts SET `post_content`
' m. }% D7 K( b# Y= REPLACE (`post_content`,
$ e6 }; J. M' O- J1 k! q'OriginalText','ReplacedText');
2 u" _0 j9 B1 g# [9 j
4 d# z$ q ?# I: w9 c5 k2 L: `+ E) Z
: N" i$ H: _3 j7 ] | 更改圖片URL
6 k" d2 w' h, M% Q
$ V) g* L5 r8 Y3 H4 K4 ? 下面的SQL命令可以幫你修改圖片路徑:
3 ^) T, X# v6 |% M; o: ~
/ O$ K5 V3 l* m T5 h以下為引用的內容:
' _, Y, k+ d3 o7 Z8 ]' R: n; C
4 c. O6 v, m5 y) s' vUPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
# X( k$ s0 W+ ~/ |'src=」http://www.mynewurl.com'); |
|