WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。, }1 q+ V4 J" I7 {; U" F
& {* f% e5 K/ N6 p3 Y9 E# z1 a
不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。9 a3 D3 S( G! s' a4 C6 b/ f
8 w$ R( q* z! ]& Y9 I- C4 ^
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。
' K6 y* K' n5 Q% A$ E
! c2 k! a! A$ F4 D3 Z8 m! h" K8 v 事先備份
" E; \) K- j2 w3 f! ^5 I4 K: w/ k2 J# i; U. N% Z" D) T( G
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。
0 t b; s3 [: X( ?7 D5 q9 H$ _# Z
為所有文章和頁面添加自定義字段
1 N" W9 f: s4 V6 B
0 F. o+ m/ V0 U' N+ [/ P c4 h 這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
- ?) k" l3 g4 E" `3 W3 V( l8 A6 d+ `' {
以下為引用的內容:% d1 V& P2 Y, g: g6 ~, N
9 c6 L0 J7 T# v
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
8 H% V; V/ E8 Q+ V4 s* lSELECT ID AS post_id, 'UniversalCustomField'( j7 L' z7 A2 [0 `: Z( Y6 {
AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
. s$ t# [/ w1 x3 d$ H" q: l0 W4 q
) [' {" ]7 l& }1 T8 J( z8 o' l6 {; k! T1 e5 b5 E( c
如果只需要為文章添加自定義字段,可以使用下面這段代碼:) z1 K8 s5 i2 G6 \9 M& B1 P
' g1 e- {: ^: z" r( ^6 I9 g: q
以下為引用的內容:- C4 Q, T( {5 `
' c$ a9 f+ h" A6 q. x0 Y1 o2 I3 y
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)+ Q2 x8 a8 I; I/ i! d1 }
SELECT ID AS post_id, 'UniversalCustomField'
, B2 J" b& ?7 R6 m+ b- }2 SAS meta_key 'MyValue AS meta_value: ^3 H6 a6 {4 [1 E# t$ Y u! x6 H8 W) y
FROM wp_posts WHERE ID NOT IN
6 w' G9 t! f9 T0 @9 S1 Q- |9 O( L6 V(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';
" y6 j% D3 _, @ {
; j6 W, c& _% u2 v$ q5 u+ r# l( N
( }+ m/ n( A6 ~) g0 K! G 如果只需要為頁面添加自定義字段,可以使用下面這段代碼:; ~7 W4 b3 F( w9 a$ v9 x. }
3 ]5 x. [: O Z9 S$ O6 ^9 I
以下為引用的內容:
$ M% c% k0 V9 o: H% }6 c
" `2 V% N z1 }2 S# ~0 m1 dINSERT INTO wp_postmeta (post_id, meta_key, meta_value) s; w& A! k3 ?( W6 k" Z8 C
SELECT ID AS post_id, 'UniversalCustomField'; v/ D+ {: v3 [ o+ O7 m5 r
AS meta_key 'MyValue AS meta_value# L1 ^% R4 T: y2 o9 `
FROM wp_posts WHERE ID NOT IN" w5 S9 I+ n, a5 ^% C
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';
* H+ O1 x, S9 g# U$ o: B- h3 \5 S+ e7 B
; K. q' Q! v, Z8 I) _! R# G6 f) ~
6 l/ [3 e1 g H5 z9 G% c 刪除文章meta數據
" z* I* R& {! \0 @! z9 Z6 n- @; z* ]2 O; d) T6 c
當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。
7 B% C( Q$ }2 v
# R" p8 _9 Q) f# K( _; u以下為引用的內容:
6 j5 ^3 y/ j+ D3 J" aDELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';
" i! y- ^( {0 R6 d* e+ i% v1 O. I+ K( |4 ~3 A
! |9 W5 d' y; \/ Y 查找無用標籤
4 E( i- d7 J! X: Z K" X, V4 o
8 P! Q. B# P' {- ^3 c& y% s 如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。
1 s+ ^( t: q; V) Q3 F( ?5 \6 w3 @+ G- L8 v
以下為引用的內容:5 i6 n# K% C: m/ t2 @: C. w
! \, `9 I9 t/ _3 ?4 iSELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
' v/ ~* e, A0 L0 n; aWHERE wtt.taxonomy='post_tag' AND wtt.count=0;
+ ?( }$ U; L6 u# D1 r7 Z; L& t( v q8 ~" C
! s) Q7 |3 D) C: B8 X7 Q# F5 R
批量刪除垃圾評論
( `* @. K3 h, C3 \ f' R+ X' _. g9 F/ ^( _3 c
執行以下SQL命令:
' d6 ] Q/ [9 W/ f n0 o2 r( ^$ w3 w+ ?/ `
以下為引用的內容:
, ^: [) s t' G* f$ QDELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';6 R1 {8 p" ?% a$ W* v6 w: T
2 F1 Z% \, Z) B, R
) m( q% N1 J! C% u/ C
! n) N9 E9 E8 S c) d G
批量刪除所有未審核評論
) C5 T2 _7 D+ N
+ |# f: ]2 n! {! w, N4 g, f$ Q& d 這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。
$ V3 C( N! b0 M. e/ r( z! |' |0 _( a
以下為引用的內容:( Z# _: x2 m1 g1 E0 i1 {
DELETE FROM wp_comments WHERE comment_approved = 0 0 W8 z8 W* A% t3 P6 t9 ?' t% d6 X/ _
' x9 z# X. j" M+ W7 H; U. V' j
( l% ?' p6 f0 S* v$ {
禁止評論較早文章" @8 k6 E5 i7 V0 x
! _* q! B0 d/ d( F: I- s" G* {
指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
3 \6 L! o1 ?* I. U# @6 h& {% W$ ]9 H& o; a1 L: F- F8 ]
以下為引用的內容:9 H( G7 Y+ k) o h
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; " W; V4 a7 b1 l4 O6 t
+ W3 Y! t; N4 y) Q- J. x0 B
0 D$ K B+ S8 V# z/ @, ^2 E
停用/激活trackback與pingback5 a+ M" Y5 m) p; @& y3 z, ?
# O& ?0 ^: {9 J; S. U 指定comment_status的值為open、closed或registered_only。" Y. P8 ?% Y% i6 V
5 m$ e& m: G: S* y1 C3 h
向所有用戶激活pingbacks/trackbacks:8 b! T, Z l9 i: X4 H
' o* D& Z2 o' c/ f; b
以下為引用的內容:& W; Q* G/ H Y
UPDATE wp_posts SET ping_status = 'open'; + u x7 K$ r" Y9 Y/ a% D% Z( c9 R
# v4 l: w `: l, {' ]1 R8 t3 t. p/ L9 L) {. Y) D) @ k
向所有用戶禁用pingbacks/trackbacks:
* Q [2 H. C% Y0 v. Q) a, P4 g; X+ A9 ~# K! k, I$ t4 J8 z
以下為引用的內容:
2 ]* y3 t+ Y' ?UPDATE wp_posts SET ping_status = 'closed';
: Q$ Z4 W0 Q) n1 Z/ J4 v* M& }# U
% [5 ^- X9 o) b4 S
( y5 b6 C) f, v7 I* n 激活/停用某一日期前的Pingbacks & Trackbacks
7 H: i1 m! I! |9 x1 {% j7 f% D! s- ^1 W: l3 w) ~
指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
8 {1 P6 M& i, T% P' t+ w* |/ p7 K2 X6 i& Z: c |
以下為引用的內容:
( n6 q3 q5 f# B9 kUPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
& r' ~4 {1 s6 y
: S$ x- j0 u8 k) W
4 g4 g# }6 t6 U 刪除特定URL的評論$ n3 Y: e; p- X8 h) h7 I; `$ k
; b0 W' c( K7 w3 m3 X7 J9 W
當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
m$ I, Z( ^& b5 [
1 J% c. ^8 R7 W. H8 I以下為引用的內容:
8 t' b& C! i4 l1 cDELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ; ; {" M5 ?- {9 C/ s f
3 W- F: u1 V4 g3 G
" H8 H5 _6 v8 e+ g# W- }, ]# h" Y
識別並刪除「X」天前的文章1 r0 J2 b( _& P5 F; E
* ?6 j" g! h8 g2 G1 K
查找「X」天前的所有文章(注意把X替換成相應數值):# b+ k% W& l/ G+ A0 O. ~! x
& Q% L7 {' Q& o4 Q. U
以下為引用的內容:9 q. o8 a$ J8 {" P m
% M! P: L, n& @! Y/ q
SELECT * FROM `wp_posts`% K3 K" @2 p2 ]8 o
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X # J2 L+ Z) B8 J* v) n
4 ]1 ] u& B9 _" a# P8 O9 [ z& m
刪除「X」天前的所有文章:
: Z5 g1 I9 G% d% B
/ k: A' S/ t' r8 A2 }以下為引用的內容:) i0 N7 D [5 k2 O4 u t3 j/ k
6 j) [) m( ^ Y; t5 mDELETE FROM `wp_posts`
/ W8 ^7 z$ P: k/ v1 DWHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
; U1 w2 I* U! b+ X" o8 e$ L
. C( A) U$ E- F" B6 X& ?# u; i; s; ?
( h6 s/ @. [! [* Q% e5 ~: J$ |+ G1 n2 N2 P, B
刪除不需要的短代碼
& h( y& b7 q* _
+ w E& Q4 X# g 當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:5 N/ l' _0 ^8 z5 J/ i2 `
1 D" Y7 _$ B8 a: S9 m5 E
以下為引用的內容:
. r- m7 B1 ]# b) LUPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; / [0 K' E9 {$ w! y* {5 B$ Y, D4 R
* A/ t2 M1 B! A1 k$ x+ ?! C' m
: b. g: e( E+ i6 G. i 將文章轉為頁面
) \& y" o' J* m
' V4 u1 K( R: b9 L9 {- `) f! J 依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
: K* l$ k: }9 g1 H3 ?6 x9 T0 P5 @5 t
以下為引用的內容:+ G- F, O/ b, S& V
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post' , g0 y- H# h8 Y: N
4 C; V- u" p% M/ X
6 I0 p" O' p+ d$ i! P' z
將頁面轉換成文章:& G R3 M' H' V7 Y, X
- k9 p! c! z, y% K# S" `以下為引用的內容:- b6 `" |( @+ ^, [
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
$ r' F/ M8 N7 t
% d$ u8 C2 b, v. y
$ k* I: g8 Y6 M0 A1 w t/ I 更改所有文章上的作者屬性0 P+ r# r! _! G7 J5 M+ \! J
" O- k# v; q4 u; P! H 首先通過下面的SQL命令檢索作者的ID:
/ T8 l, q# J8 ^3 S+ F1 W o# r" b% E: F; x
以下為引用的內容:; g# z, h# P' K% v0 C
SELECT ID, display_name FROM wp_users; 5 y7 ]4 I+ b( ]2 g! r' |
% y! n! O, R, T: i- x: N
4 F& x& b: q+ h 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。6 Y, a- M. J- d. R
+ `8 ?6 o& w. E) D) S2 ^! d4 _% Z+ t
以下為引用的內容:/ A0 k' m% q( W% L* f7 }2 |3 q
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
* e) ]$ \7 v; \
% Z! S2 N1 Z" t$ C2 V& Z6 K+ q4 l9 W5 e' M) K P! } U
批量刪除文章修訂歷史; w$ p) F0 l6 F4 _3 \
) [# t9 C* G( j/ z* \
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
0 P. o) R+ X- ]3 \
, Y/ E0 P: k+ _ e8 n! A0 ^/ o9 f- h以下為引用的內容:
9 x: B# Q5 H* Y* _7 UDELETE FROM wp_posts WHERE post_type = "revision"; . m2 ?" B7 r" Q7 z6 x
5 Q* W8 ]8 W( @2 s" O
- o, U# W" w& M- Z3 M* s
停用/激活所有WordPress插件! _6 N- B- v4 [7 A. D$ K @
9 ^( } L. t5 {3 B5 w6 a2 |! [
激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。
+ N+ F, p* z% |6 L
( K7 A' W8 i3 p8 {" ^, j以下為引用的內容:
1 ]6 n" K8 S& g1 u4 R' {UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins'; : a1 ^9 j, n6 I6 h$ R
) p, M) t9 `7 V, ~* g" A
& B' n" b2 K! M 更改WordPress網站的目標URL( t/ p3 g5 L# F3 t. m
( o% `9 b% z* O8 J/ l 把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。6 \; q& t- D" P6 P
u( {. }! S: k. t1 _3 H 使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。
6 v5 }5 p" T7 I$ K! K
4 n) k* Z0 M5 y. X 首先:
& Q7 |+ {" O2 R; n& |5 O o" E$ U/ @. a S X
以下為引用的內容:
& E2 [' P$ ]! Q, d! b o2 aUPDATE wp_options
7 K% [5 A0 ~7 B9 _SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
5 _8 q' | k/ m6 VWHERE option_name = 'home' OR option_name = 'siteurl';
( C- u) u; _# E, J( b j9 n. x, D1 Z& k* A2 ~5 s9 V
% {& @: U C9 W! w9 r 然後利用下面的命令更改wp_posts裡的URL:8 b6 o7 F+ d0 l' _4 {
N# K) P3 @8 A3 K' J4 ]9 x
以下為引用的內容:
1 c# D3 Z, q( q% m( q8 E( `" dUPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
' X; l$ A y9 u/ l6 a% o
]6 |( h( o: y3 ~5 R! R7 P8 k1 h) ]8 v7 \; i1 t
最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:; ^) _4 A$ h! y! u: k" S" m
! {/ c2 ]- u* u; j# D' t
以下為引用的內容:; W8 E, r$ h% |, V
UPDATE wp_posts * D2 x" p. X1 e4 o; S! D9 s
SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
% R- Y# ^1 A) b6 C! |. Z; f
8 O2 h( @4 T" i. Y8 w
. H: q# u" l* e* E6 O' O7 V 更改默認用戶名Admin
, N: U# p6 z* |7 e, E4 k6 r. P8 K
把其中的YourNewUsername替換成新用戶名。1 H0 S( _; l8 U6 `
5 _5 R: f' O# W5 \- {! s1 ~& S6 v
以下為引用的內容:4 K9 K$ t! h) _: E7 E2 u
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';
3 I5 j; t* ]! j) l$ o M
6 F- b O/ s7 r( F% B7 l5 Y* `8 R5 x5 l! Z" a( f
手動重置WordPress密碼6 G. ^8 U) T1 o
- V7 D( q- }+ R) O. O$ e
如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):
* c r& a( y0 ]- Z* R: J3 U& _3 p: f3 l- ^
以下為引用的內容:5 M$ A4 K& i B8 j$ e
UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') - Z4 g$ O2 b, o/ q
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
# e0 n5 O- W* ?5 N- l* A0 N3 ~7 i# t4 ~' g/ c9 u+ o
' L+ f) p4 o. l
搜索並替換文章內容+ P& a: N0 `9 j/ T' u: g) N! X
8 ^, Q x# M2 A% S6 f OriginalText換成被替換內容,ReplacedText換成目標內容:3 H: ?0 F. k J5 K/ c& n
; d; H/ l2 ~7 b- O; R a5 s, m: Z
以下為引用的內容:2 N. E3 K: Z. {
4 E! n" X& E6 h. L% O4 G3 b$ V
UPDATE wp_posts SET `post_content`
5 W/ W: k9 B6 T9 o= REPLACE (`post_content`,! `0 k/ ? \! n0 m. J
'OriginalText','ReplacedText');
/ ]) b: ~) P! I& x- e Y9 K+ p8 w# _$ H6 B# v
/ c, w O- P+ L+ J/ I& C* Z0 v) N) D8 g" c8 K- b) U
更改圖片URL8 e5 d/ }* y& z I4 [2 R
4 z1 s9 {. s# b+ a# {
下面的SQL命令可以幫你修改圖片路徑:
% u$ q! K) f" c: s8 a: ~
4 F( k) @0 _7 Q& w& j7 @4 R以下為引用的內容:
3 U% g7 Z3 y" y. p# {/ ]3 H, m) P0 m5 d4 A
2 q3 e7 X2 Z5 M8 ~7 s! n ]UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
7 p- G& g! l8 i'src=」http://www.mynewurl.com'); |
|