WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
# s" f* g3 c- n" l' G
) e5 `1 S% I" G$ q( W1 p0 b 不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
* q& J0 |4 z( A* m1 ^" R/ X1 N' m5 f; [2 |% J% H
下面要介紹的就是一些省時省力的WordPress SQL查詢方法。0 K. s' h( B$ _% {
+ o. j. k9 b) H' l" F
事先備份
: s6 Z# j; f" Q( y; G% u& v9 _; s1 G1 ]# T. m1 P7 q
WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。& M( b# \% K- A) L/ `+ `, ]% R- s
' W) u& a! I' e9 `: h) l2 s0 Z5 f 為所有文章和頁面添加自定義字段7 d4 O/ V9 R! h4 @% s" m
- g! e$ J/ F) @6 T 這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
( Z. p! [7 P7 J; z# ]) f2 L6 ?0 Y3 v) I) I4 m$ M) o
以下為引用的內容:
/ z; c7 N- X0 X, A3 C- H+ m) b9 h) g# s
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
& Z# C c6 a: y7 c6 YSELECT ID AS post_id, 'UniversalCustomField'
; A4 \# q1 I9 J3 n* Q$ A9 @, @AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');
8 R4 `7 s- b6 F! m
$ V7 f7 u8 ?. z9 G! d5 L( t% m+ I# e6 \ d2 c, y
如果只需要為文章添加自定義字段,可以使用下面這段代碼:
; W! D* ~$ m+ o& W& p2 R$ g* B8 I- g+ Y7 Z$ `, o4 q7 M
以下為引用的內容:7 w4 U, U! ?( R1 e+ N" m5 G
3 t, D" H. u5 G
INSERT INTO wp_postmeta (post_id, meta_key, meta_value); M7 J: c# }! m4 [6 T0 V2 p
SELECT ID AS post_id, 'UniversalCustomField'% t) V C+ }! z) ?$ j7 M% l
AS meta_key 'MyValue AS meta_value
% @3 R8 O0 k6 Y RFROM wp_posts WHERE ID NOT IN7 G+ i4 ]# o: i. B4 |: X" P2 Z: x
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post'; 4 ?; E" U% ?0 m* ^( l6 \
* m& v" y( x# |4 @8 X
9 K- W% |& A7 L0 d; B$ Z, i
如果只需要為頁面添加自定義字段,可以使用下面這段代碼:& S3 z3 B; c' {* d
$ C3 j4 m1 V7 c# U0 z
以下為引用的內容:1 |' E# c. @( g7 S7 D: R! d* n
+ g0 l1 d) R1 v& K' {+ T3 yINSERT INTO wp_postmeta (post_id, meta_key, meta_value)
$ ^, `& U( x' Z/ W! s5 `8 o. WSELECT ID AS post_id, 'UniversalCustomField'
! B3 \& b* T, [, J9 XAS meta_key 'MyValue AS meta_value2 p6 J! c% ?' j/ @% T: q* a! k
FROM wp_posts WHERE ID NOT IN8 G; `6 J; M5 H2 J" o
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';; M/ v/ N9 w! B6 e- d [
: _7 ^, {- K5 M4 I1 z) C, x' p1 s3 j9 Z- q
/ k4 x: l' Y* ^; C# |# v
刪除文章meta數據
4 R5 m4 f0 q* t+ Y) e
1 j/ @ e, g7 z5 S" D- \4 O8 R; k1 H% r 當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。2 v( B# Q1 b9 o5 `
$ Q( C$ I1 Y. x3 U) ]8 r; J% M8 U以下為引用的內容:! I- ^" C$ o J7 Y0 v# @, v
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey'; . K D7 Z% H8 B1 y% U |. r
0 s0 c3 v7 B! l8 u& K5 p O
0 q3 H! H* b# Z0 o+ W9 y( Y 查找無用標籤
% t- \. {" E% E) ~' E
' ~' l1 x7 w" i+ P) x 如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。2 r7 @& O R& c
' E) \3 c+ W( ]9 l2 e9 w8 q. i: N以下為引用的內容:6 n, x' A4 b. K" Q$ Y" B
) [; c. y+ z' u
SELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id 5 |; V n, _& r! J' }
WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
- N# {/ g6 L" E: T3 p; f
. o8 B4 F6 O/ `4 [0 y/ O6 r2 `+ o+ ^! P) m1 o7 Q4 ? {* t& t; Y
批量刪除垃圾評論5 j5 ~' _: G3 ^2 X% q3 r
3 e+ b3 I" y% M' z7 O 執行以下SQL命令:( P( k7 M6 m- `
$ w( S* Q( P5 J r: f
以下為引用的內容:2 O( B- [& a/ m* _0 K$ V: r
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
0 v" t) H3 a1 n
" [; \0 w% r: D( s0 D0 U& B: s3 u% x& R4 L" P$ Z; k: H
3 ?0 u& K$ U W2 ^$ ]1 e
批量刪除所有未審核評論8 @8 L4 e/ ~: n1 d7 g
# [5 M+ } W9 K+ w8 |
這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。) M( l" |; y% y: }* Y
5 ], W3 @8 j5 J" g6 |& U5 B' S" J- `以下為引用的內容:$ x* y5 }0 u& ]& \
DELETE FROM wp_comments WHERE comment_approved = 0
1 ]4 K+ [# k$ z9 Y% G4 V g" z/ D3 \! W. f/ L
' u* g0 Q+ a+ v- L) K; @$ q 禁止評論較早文章4 H/ i7 O) J- Y
d% ^* {3 y# {1 X
指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
# S0 B5 l! B7 k- Q: k6 N0 @ L
3 J$ }" Q$ m0 M4 ?: E( B以下為引用的內容:
5 x' _& e/ L, n+ O6 SUPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish'; ( p# d- q! l: Z5 s
; N2 c b* C I; N& j* L
# t: T5 T/ `" d4 D8 G6 e$ ~2 ?: b5 F
停用/激活trackback與pingback
# G8 Q' F# S; ]1 X( @* }
0 f! |1 Q) h7 m% [3 l' ^9 D 指定comment_status的值為open、closed或registered_only。
4 g3 a: [) w' [9 E( t1 m2 F9 a* u- G a: A5 {
向所有用戶激活pingbacks/trackbacks:
& D' ]! |4 b! s( W5 G! a& Z, ?- o
8 y @% B) P+ D( H( n以下為引用的內容:" X! Z% s9 M, \: ^; C
UPDATE wp_posts SET ping_status = 'open';
, D1 m& f% p9 s" m& c0 G6 C M& ]$ G. c- P5 X9 E) D
7 w/ G, I0 A* e8 c7 e8 b3 ?! i D
向所有用戶禁用pingbacks/trackbacks:7 C9 \4 T. M) I/ p( g1 c
# j$ d& W% g; _. j以下為引用的內容:3 @! F& N$ k' q, u5 W) D
UPDATE wp_posts SET ping_status = 'closed';
% ^# _8 N6 p. u+ ] d$ _+ J: d- }7 t+ A! Q+ D+ {5 |
. R' u5 {; p, _+ e3 [* I! y
激活/停用某一日期前的Pingbacks & Trackbacks L5 t* S$ [" P* o$ |6 C4 K5 Y
, o: j7 p2 _* o% d. D% m, b! F9 l4 Y 指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):
/ j7 z, G9 ^4 ~8 ~' @) ^: F+ j9 j$ K% I/ ^0 y
以下為引用的內容:
2 U9 s- i' J* U. Q0 S9 H0 S W; B/ C$ |UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';
- o& t( g$ }4 ]" g0 I+ v6 E# f7 H/ Y" @6 F# j/ i5 X
5 s& u. X) Q: B& `/ f# V9 M, n% r
刪除特定URL的評論
' t- l& t/ b0 ? z
+ @# o4 V# y4 o 當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。+ P* J9 u5 q% ~. U4 X3 X; r! {) S
7 F8 l( V, R8 z& _以下為引用的內容:2 F' L/ a' O) C* p
DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ; D6 y! H/ F% `
1 ]5 F& |3 v% r; x: l* X0 j; U* p- U+ A% H
識別並刪除「X」天前的文章* ?$ A. O, P1 C
: W3 q! I+ D9 x7 s5 i
查找「X」天前的所有文章(注意把X替換成相應數值):6 v! B% h% J1 S9 M' W
2 k- H- s' l I2 u& Y+ f以下為引用的內容:" f8 Z) _, Z8 J0 \1 l
) w1 [2 o: ^6 D, @9 J+ ?SELECT * FROM `wp_posts`+ m7 U6 X8 k# d1 e1 c% m
WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X
* v; } W8 @" r5 M
9 T! I3 I6 G; u+ I- f9 q7 v
`; |8 n% k* O 刪除「X」天前的所有文章:
: E& t+ \3 f6 m# C* w, _$ [! z& n) P& d
以下為引用的內容:
9 d) Q( b9 |+ K* U: }' t6 @& h! V- V
DELETE FROM `wp_posts`
7 Q7 U& B+ b2 M& u* ~WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X- i8 t6 s9 B5 B2 U$ B
2 G4 K5 L- T4 V: Y
8 k$ U- o% l. {( i1 i1 b# J8 s
7 N0 W* H2 J- h; n; [8 s
刪除不需要的短代碼* h/ ~8 Q" L/ o2 U. M1 s
0 S, A( b9 o' S* K 當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
Y" Z$ ^; h4 E6 y, W4 \
3 E- d5 k1 O* k! }, {以下為引用的內容:: b: ~' r* K! p- V4 d* [6 k
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ; . r) |; z* |" I, n+ O+ U! W
4 G( ~# m+ n0 e! g: R0 {: ^% V8 e
; q/ W# }; w- O7 Q; Q4 E1 S
將文章轉為頁面
% _, X6 O$ r" ]7 f/ \, M9 p
4 |- z- V2 D0 j& U9 {: Y! l U5 O 依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
4 s+ H/ G% A- F% L5 T: z& F. U
; J" E4 M0 e6 z. y. S2 w, e以下為引用的內容:8 E% J: n$ F5 W- p7 s) q
UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'
& f8 p8 A1 ]' p3 ^
' i2 k# t8 N9 I! b/ n
6 U. k" |. d& R7 I 將頁面轉換成文章:
" f7 n, R9 Q/ J1 m$ r5 y( J
5 V0 Z9 f$ |: ?以下為引用的內容:) J4 n+ n S) T4 }
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'
) ]# h q; k6 J( r; ?5 c2 P4 [- F( X6 y( `- A3 h6 W
: A/ G* \% _" _- q! P2 i+ V
更改所有文章上的作者屬性
2 }3 m2 V, x7 @2 g9 R
$ P# |" \% d" M9 [1 u4 Z: y- s 首先通過下面的SQL命令檢索作者的ID:
* N. h7 Q7 f' b5 P$ ?5 o% `& z% D6 G$ d5 i# D# H" L- A4 q
以下為引用的內容:
. R, m& e- c6 S/ ]9 ESELECT ID, display_name FROM wp_users; , }0 ?* c6 Y# n- }1 k, V
3 ?2 t8 U5 d: V! v
; H1 d) H8 l P! H 成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。8 U* \8 u g% e! ~
p3 \7 V2 ?% A8 z) D; w0 d以下為引用的內容:0 \) \5 c1 r5 [8 q
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID; % Z8 R& e/ I0 p+ f9 F! W* K" W
% ~( p- `/ p! T% N( Q' E+ j! z9 |4 }
# m9 I V" ^& E' h& r8 _ 批量刪除文章修訂歷史
7 ?% F, ~3 T1 E1 `) ~& N3 ?- z( q4 J0 ~' m: e) q
文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。- [+ y0 L' O& Y! p. s* m$ X& R
2 a# e# O9 s3 h' h+ n" ?# H/ x
以下為引用的內容:
( p4 h* ^8 |( D" S1 q, ?DELETE FROM wp_posts WHERE post_type = "revision"; + R7 e2 L) v& f0 N8 X( a
5 r, d" o( F/ c0 z" D$ {* c; U* E* l& J+ f/ {. |0 q
停用/激活所有WordPress插件* C' R' i4 O8 @: a* d
* h6 I+ C% a! U- ^( a9 k: R
激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。$ [0 H+ Z0 r* ]$ x
9 w. B3 w# Z8 P0 W9 A( P2 ?/ V
以下為引用的內容:
7 q# h' [6 K) i z- X1 u1 c( M$ XUPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins'; $ ]5 M) v( A: p3 d, |: Q* t& v* J9 F
! a v; a" |9 g* h% |( o8 a7 {4 g2 _6 a, C1 V
更改WordPress網站的目標URL/ j' h# M* W9 F% e2 `6 B+ w/ c1 K! v. I
0 r4 O) l6 | @ J. V" A
把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。
a$ b* {$ u6 Q; ?: `; H$ F$ C k+ X7 m3 T6 i- f3 G
使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。" M; H; P, t% e* A8 w
) M5 i. Y0 q, i* t* e3 F1 ~- q! Q
首先:" Z% L B8 M" e( A0 |0 Q
; t- U7 C' z- v2 b5 U6 L以下為引用的內容: K; w2 W6 `* t2 Z$ P
UPDATE wp_options 3 a( O, j& r! g" b, E2 ~# ?, ]; Z
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') 2 X1 l+ k( d# a. q v* G- n! u2 e
WHERE option_name = 'home' OR option_name = 'siteurl';
3 K! o1 r6 E3 E% y/ K, ~+ L; N
" y" \( J6 K2 K
% Z. a% [$ Q9 L( ?1 P+ z, O/ N 然後利用下面的命令更改wp_posts裡的URL:4 C* L8 Z/ A9 s. N$ h5 Y
! _7 T& F7 R8 ?0 E! t
以下為引用的內容:6 W8 ~, m$ i I7 X7 t
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
$ F# A3 i$ Y8 `. D( h6 d k: W
, R6 U, Z' N2 U$ \+ \
0 T1 S- a" Y1 ?7 O/ R 最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:& }! k+ R2 Z* P6 X" ]
( j8 \+ ^% z3 [# N e# q2 d, P
以下為引用的內容:
# }( v8 ~6 b; x/ J. b' H# i: Y5 AUPDATE wp_posts
" ~2 b# ?+ w5 ISET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com '); - X9 \2 e s5 ^' n! M
; \. F# \9 r; l5 c g( i* i! S4 l/ N6 W1 n
更改默認用戶名Admin" k6 {+ V- U; r4 ?, R
4 ?' y* R# a5 B7 \# R 把其中的YourNewUsername替換成新用戶名。! m5 y$ C4 q3 ]" ?) y/ Q1 [
" R, z' d- I& ^& T% ?! f7 T以下為引用的內容:2 Q/ }1 x0 } h6 K/ U7 f
UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin'; , T/ M9 l* Z0 q e4 w' _* p& @# |
- _* M/ S( k7 s6 s) z
; F' Y/ F- ^# F4 L1 _6 h( b% _ 手動重置WordPress密碼1 c8 M: @, w' B# O4 d/ {
7 r# O* m y1 D5 V 如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):: d& Y, ^2 t8 ?& C7 a
; L4 g4 F( W! n0 p5 g0 q* F, Z
以下為引用的內容:
2 I, T: U% A7 j8 l# z6 O9 tUPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD')
% u9 K/ i5 ~4 h& SWHERE `wp_users`.`user_login` =`admin` LIMIT 1; 0 T7 `" L3 Q1 F
% u. N7 r/ c8 E, S5 n) f
/ p2 e2 ^% l5 s+ d7 P 搜索並替換文章內容
; h' t8 T w& o4 W# q1 c" o+ Z5 r2 m& N7 k$ X5 P$ o
OriginalText換成被替換內容,ReplacedText換成目標內容:
+ F* p1 h3 x# n% {; `* q: n# d, X( D9 f; T% f! j( p; G
以下為引用的內容:# {! ]0 W1 o+ N# `
3 d: D: _; g% d5 |3 _0 B
UPDATE wp_posts SET `post_content` X" B" ~- p$ c/ v2 S
= REPLACE (`post_content`,% S; C/ Q# O$ s0 ~
'OriginalText','ReplacedText');
6 @8 u. v" ], E2 w' u2 f6 Z3 D+ N! j9 M
/ ?' H# |5 Q( j6 {8 B! \/ ^. _
4 g8 T, [( \5 q+ m4 W 更改圖片URL! _" X: g! r: r0 h/ E
( p0 I% }+ a* v7 }0 `! j9 ~- M 下面的SQL命令可以幫你修改圖片路徑:: d0 U' G# r& Z! a
& z8 t0 L: K7 Z
以下為引用的內容:; c* `* b {' Q( j. Q. O: x
. g2 Y/ T! ~$ i* q. j% o, E
UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=」http://www.myoldurl.com',
" f; I# Y" f8 t P5 X: [2 h'src=」http://www.mynewurl.com'); |
|