过期域名预定抢注

 找回密碼
 免费注册

20個wordpress sql數據庫查詢語句

[複製鏈接]
發表於 2011-3-31 14:20:47 | 顯示全部樓層 |閱讀模式
  WordPress將其所有信息片段(包括文章、頁面、評論、Blog鏈接、插件設置等)存儲在MySQL數據庫中。 雖然WordPress用戶可以通過網站後台編輯控制以上信息片段。 在一定程度上。
0 N6 A" d& b* F0 b9 G5 \3 ^5 `
: R7 d) h8 F9 @  不過假設你的WordPress網站上有成百上千篇文章,而你需要進行全站範圍的改動, 這時從後台逐條編輯就有點費時費力了,並且犯錯的幾率也會提高。 最好的方法是進入WordPress的MySQL數據庫執行必要的查詢(改動)。 通過MySQL可以迅速地完成以上任務,為你節省更多時間。
& [/ d# C- a* x3 y/ M) M  g: Q. C# D# n9 ?6 ^% z
  下面要介紹的就是一些省時省力的WordPress SQL查詢方法。  L" M. p9 ]! ^7 X. |/ r7 n$ n

4 \4 D/ S4 Y# m% k, l  事先備份3 b1 s& n, N' O! f7 c8 V
1 w2 |9 _1 ?$ \# o3 _
  WordPress數據庫裡存儲了你精心發表的每一篇文章,來自你的讀者的所有評論,以及你對自己網站進行的所有個性化設置。 因此,無論你對自己有多自信,都請記住一定要事先備份WordPress數據庫。 你可以通過備份插件進行備份。
# b! z1 V& Y& `+ D5 u' @7 k" [: ^
7 ?: z% G- g9 e1 H9 r1 ^  為所有文章和頁面添加自定義字段, }/ c6 a! S( I* N, V
4 Q# o: {; t. O( V6 [, b+ t
  這段代碼可以為WordPress數據庫內所有文章和頁面添加一個自定義字段。 你需要做的就是把代碼中的『UniversalCutomField『替換成你需要的文字,然後把『MyValue『改成需要的值。
  c7 z& K% J: ]& [. }( a3 R" |' c% x! X7 f
以下為引用的內容:: S8 @; h& ?! |
# U7 L. ~  j9 j* s! `1 L* l
INSERT INTO wp_postmeta  (post_id, meta_key, meta_value). m* O4 K& E2 X: {) v) Z* I
SELECT ID AS post_id,  'UniversalCustomField'
) y4 Z4 Y- x" C3 nAS meta_key 'MyValue AS  meta_value FROM wp_postsWHERE ID NOT IN (SELECT  post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');  
: J- E5 ~! k- ?2 V' z' [. m2 T% ^, M3 d0 z7 @* Q6 ~

' V% f2 s) R" C: u' Y: @$ r  如果只需要為文章添加自定義字段,可以使用下面這段代碼:
! b6 i' T: B! g1 R1 E
6 G6 j- [  I* A3 K以下為引用的內容:
+ g& B, {2 B) a6 `6 T0 W8 r8 s" O1 m- j
INSERT INTO wp_postmeta  (post_id, meta_key, meta_value)
6 |4 F9 k" @0 D2 P4 MSELECT ID AS post_id,  'UniversalCustomField'; e4 m* M, Q0 z7 b  J. l1 r
AS meta_key 'MyValue AS  meta_value+ `( e" P$ L* t5 R5 E' I6 |
FROM  wp_posts WHERE ID NOT IN
, |/ I6 c; P( o: f% v(SELECT  post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';  # {: g0 _' p3 o
6 W( p7 A; I7 m1 M! Z" q- _
$ Y+ T( G! L2 a. d  R3 B
  如果只需要為頁面添加自定義字段,可以使用下面這段代碼:
1 A! \1 i5 r2 Q# ^' |
' p) u( K0 c5 z( U& g/ w以下為引用的內容:; |1 f  ?/ c& x( B$ w7 x* p

2 E) `7 M8 t( [' C% j* O9 KINSERT INTO wp_postmeta  (post_id, meta_key, meta_value)
- ?6 I" \. e; K) u- J8 w$ ?( HSELECT ID AS post_id,  'UniversalCustomField'$ J3 N  X% F( o1 `' b, d- A" V, c& b
AS meta_key 'MyValue AS  meta_value4 m% I" {4 |$ f% U. c
FROM  wp_posts WHERE ID NOT IN
" k: d# k; Y/ o(SELECT  post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';
3 b6 A8 O7 b  C8 K
" {- W, o: b: \+ [3 v, a9 A
: F7 d  v" ^# |% y3 {& e2 c- K+ C. F, o% x, ~) I2 r
  刪除文章meta數據
: Q5 r! n0 P1 o) ~5 ~5 J9 U  d3 ]8 e, j9 T
  當你安裝或刪除插件時,系統通過文章meta標籤存儲數據。 插件被刪除後,數據依然會存留在post_meta表中,當然這時你已經不再需要這些數據,完全可以刪除之。 記住在運行查詢前把代碼裡的『YourMetaKey『替換成你需要的相應值。: E1 T% }6 k# ~; S, G3 f

8 Z: C3 g% F! W4 F以下為引用的內容:9 X( Z5 E# K. N7 X7 d& j! T( ^
DELETE FROM  wp_postmeta WHERE meta_key = 'YourMetaKey'; # u$ x6 o- T+ B+ F, P; ?* A
4 t* _, v# [9 s, D. w& H* S
9 E- A" }) G7 l4 E  F1 w/ _( ]
  查找無用標籤' e: p; I8 u6 ~
$ d+ T6 I  }% E7 |; q- c
  如果你在WordPress數據庫裡執行查詢刪除舊文章,和之前刪除插件時的情況一樣,文章所屬標籤會留在數據庫裡,並且還會出現在標籤列表/標籤雲裡。 下面的查詢可以幫你找出無用的標籤。8 H* Z; [, ]; Q6 p$ J" I2 }
2 o; F2 A+ ^, X& p$ e' w
以下為引用的內容:( n+ x9 v$ @# c' t7 A" r- _

! w6 }) B- h6 D5 v0 nSELECT * From wp_terms wtINNER JOIN  wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
; H  m8 ^$ ]$ aWHERE wtt.taxonomy='post_tag'  AND wtt.count=0;
3 n, T+ B$ U* Y# d( _7 A2 d$ g  x2 W4 G: p5 N
8 X  Z, z2 a( @9 d+ S
  批量刪除垃圾評論' p# v& G5 W& w8 V' K

0 X# @" m( M3 b& w8 x0 ~( O6 {  執行以下SQL命令:6 i6 G( u) c- \) G4 {* L0 f

3 Y/ `. g+ L2 k. y& {6 u; o3 P以下為引用的內容:
, @" {9 y% p. p( {5 `/ x1 WDELETE FROM  wp_comments WHERE wp_comments.comment_approved = 'spam';8 s! E. }/ k: x6 u
+ K3 B  C, s$ u
6 d: ~5 A, n# t6 j# K$ F/ N

+ j( {" b5 H% ]* K: @3 x  批量刪除所有未審核評論& E- ?9 w* @5 ]4 u

7 M/ U4 \8 t7 y  這個SQL查詢會刪除你的網站上所有未審核評論,不影響已審核評論。6 l# F+ L& P* I

) h4 H3 G* u: b) d以下為引用的內容:
% ~/ p. z4 X4 G6 tDELETE FROM  wp_comments WHERE comment_approved = 0 # I* S* D2 a& ]

$ T$ P3 f5 e: i: z$ ]' Z
  c  [% Q0 d& ?* e& |" E) a- \  禁止評論較早文章
3 x, Q* @6 N/ ^, U. B1 a
5 H# c& e' ?4 X  z% [  指定comment_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):4 W0 Z/ M6 l. J# x" u) V) g0 x$ Q
4 I( P$ l( j! k& k/ ~
以下為引用的內容:
+ y; O8 D+ ~0 F3 IUPDATE wp_posts  SET comment_status = 'closed' WHERE post_date  < '2010-01-01' AND post_status = 'publish';  
1 [5 ?" `. S- O7 j) Z; g/ y
3 M1 m4 l, \8 L, ?
( p$ J- k* W8 [- o  停用/激活trackback與pingback. z% }+ @; t6 ~6 q( g
5 B4 u* u) @6 }3 I6 z' Z
        指定comment_status的值為open、closed或registered_only。
  {9 [" @+ ]$ M% w. u( L( f- w# T# @1 c/ p5 e
  向所有用戶激活pingbacks/trackbacks:
7 L# R/ L. V5 V  Z4 M- K. o% c$ c/ t, F# o( c+ s
以下為引用的內容:) M7 O6 ?2 G5 c3 \2 @
UPDATE wp_posts SET ping_status = 'open';
+ \( d* a: u+ a) Z1 T* m' F) E1 F; N4 N" m9 a

7 O+ H$ l+ r6 M5 j6 r# W! c  向所有用戶禁用pingbacks/trackbacks:
3 k. R# V- \, Y) m# z; q+ r$ a( z$ D! Z7 v6 z; d  z
以下為引用的內容:
( c* y7 V* g' Y* M* y+ BUPDATE wp_posts SET ping_status = 'closed';  7 Y9 d# \' t: F& D

0 l( F+ j: _. x0 Y" R' V3 F) |# [
% ~! u+ j4 x& E: V  P  激活/停用某一日期前的Pingbacks & Trackbacks1 v$ h2 g, V& G! G/ O5 j1 z

6 j/ ]7 }4 _0 @3 w& j7 c  指定ping_status的值為open、closed或registered_only。 此外還需要設置日期(修改代碼中的2010-01-01):, r; i! U1 \! V5 i4 u/ Z
% P9 q" _: h* R0 U
以下為引用的內容:
" x. a( H8 U' W, WUPDATE wp_posts  SET ping_status = 'closed' WHERE post_date  < '2010-01-01' AND post_status = 'publish'; 6 o% Z5 k" O, b" w2 ?, q

$ Y) B! Z; A5 [3 {- _
2 {) K: M! B1 A  Y& ^  刪除特定URL的評論
  m* E$ K! v# e$ E
+ s! i$ X0 K  P/ l  當你發現很多垃圾評論都帶有相同的URL鏈接,可以利用下面的查詢一次性刪除這些評論。%表示含有「%」符號內字符串的所有URL都將被刪除。
, ~/ _# n8 f2 r: K- h
: Y. L6 |6 @% r# y+ \% K以下為引用的內容:2 B: ^0 K( I" `
DELETE from  wp_comments WHERE comment_author_url LIKE "%nastyspamurl%"  ;   X& ?4 [9 l7 ?5 V" ?

1 G: b* f$ E2 I1 ?. u. `3 S  d- U+ a$ M
  識別並刪除「X」天前的文章7 _8 `% \6 n5 L- }8 b

, I; s: B+ w; L1 W8 t  查找「X」天前的所有文章(注意把X替換成相應數值):
0 j7 A+ ]6 W! P+ o- q
* {- j5 @4 I! q. _* ^+ L以下為引用的內容:. p% n7 M  O  E; X

" v" \- Y$ y) z5 m! v" BSELECT * FROM `wp_posts`6 Y: _6 s: Y# ]7 v) J6 V
WHERE `post_type`  = 'post'AND DATEDIFF(NOW(),  `post_date`) > X  
, w) P4 V+ |; ~) B. N8 M) g
) Q% V) o1 {2 a- A" [! F* }
! I. ]6 J( R/ C' z( n& r! K  刪除「X」天前的所有文章:5 c9 |: d  ~6 R( f4 d9 G

+ c+ C$ p" m2 X- Z8 |0 @9 n以下為引用的內容:3 T" w9 x: L+ G2 }

' i9 }2 a- u3 kDELETE FROM `wp_posts`
7 Z$ c7 c7 I! {( IWHERE `post_type`  = 'post'AND DATEDIFF(NOW(),  `post_date`) > X
: X4 A) N7 Y# W+ a- G+ W" ?" l8 d+ [/ G! L

" y! K# p7 @& N9 i- r
! Z+ j8 {$ G- ^1 K% B  刪除不需要的短代碼
4 A- Y8 W: X5 Z( @& @* F% b1 M# `
/ J. G3 `& T3 H0 p  當你決定不再使用短代碼時,它們不會自動消失。你可以用一個簡單的SQL查詢命令刪除所有不需要的短代碼。 把「tweet」替換成相應短代碼名稱:
- K* E" B) @9 _9 l) J0 `8 v; T) x( A( G. v7 J8 m
以下為引用的內容:% B8 f( ~" U3 u8 K
UPDATE wp_post  SET post_content = replace(post_content, '[tweet]', '' )  ; & C) W5 z& Z) W9 O8 M; v, E" Y

( m& b0 v5 g3 r$ R  F/ w
2 j, o2 I5 f4 U# m: I" P5 i  將文章轉為頁面1 b+ R# X# v; w1 [) f

  O# V! c3 ^+ U! Z4 c( s9 [& F; ~  依然只要通過PHPMyAdmin運行一個SQL查詢就可以搞定:
' I- S; Y: Z) x7 U& b  g
* r' c# d- c( P& [* w$ o% b8 |6 t以下為引用的內容:1 ?" d1 l: Y% y- ~& F
UPDATE wp_posts  SET post_type = 'page' WHERE post_type =  'post'
4 h+ ~1 G$ e. R: ^- l: n5 G
- l( t* V/ ?1 V. \- x' e7 }  a2 o, n
  將頁面轉換成文章:: q6 E. n: v+ A6 @8 ~' B) s9 t

4 p0 d: S& k3 w+ ?9 x* p  p以下為引用的內容:3 v6 j' o* d: {, Y1 P, Y/ ~' f
UPDATE wp_posts  SET post_type = 'post' WHERE post_type =  'page' 1 ]" R  F% d  L5 Y
5 k& p4 C- S; P4 ^: J1 W

1 Z+ w4 t& ~& k5 Q: Y  更改所有文章上的作者屬性
9 q  E/ j3 y4 U/ k& ^) `8 ~% Y- W# L6 O! d* C+ r: j+ B
  首先通過下面的SQL命令檢索作者的ID:
! ?2 C' l9 e+ ^7 c( a# F2 G- _5 w" K
以下為引用的內容:/ L; Y% H/ B( w6 t! P! J. ?* \/ H% D. v
SELECT ID,  display_name FROM wp_users; $ w( m/ n" r0 U" k
1 Q1 E$ q# C& n
+ q2 @! G( i/ h' X' |
  成功獲取該作者的新舊ID後,插入以下命令,記住用新作者ID替換NEW_AUTHOR_ID,舊作者ID替換OLD_AUTHOR_ID。
6 }1 Q- g9 a& M
  o: |& D& V8 F  G. W" ~2 M0 D以下為引用的內容:
1 h' f. l4 P. z$ PUPDATE wp_posts  SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
* J1 ~( f: S& i. U$ b) _
/ O9 \' d$ y/ O6 v
. B% d& a7 c0 |7 [( q, s' B3 m' p     批量刪除文章修訂歷史
& D6 J' e; l: D6 O8 Z$ n8 |: b9 n$ G) @8 i
  文章修訂歷史保存可以很實用,也可以很讓人煩惱。 你可以手動刪除修訂歷史,也可以利用SQL查詢給自己節省時間。
# b3 i) b. E. n* Z# N" c5 H  s% Q1 T( I2 J5 s
以下為引用的內容:, {% W" y& O  ^, l% E5 `) B
DELETE FROM  wp_posts WHERE post_type = "revision";
) h: p* \- J8 @0 j  ^; j( w4 H. B6 r5 l0 n  U

( ?" n0 O4 m! a) }, }2 @5 q" t6 W  停用/激活所有WordPress插件
. g% j9 Q1 y& o! N. S8 n2 `: K: C& \6 z1 R4 a- E6 C
  激活某個插件後發現無法登錄WordPress管理面板了,試試下面的查詢命令吧,它會立即禁用所有插件,讓你重新登錄。) [) I$ K# T8 o7 z' n8 ?' v
7 a2 Y8 E; U9 E) a
以下為引用的內容:
0 }8 q& H- }; {7 RUPDATE wp_options  SET option_value = 'a:0:{}' WHERE option_name  = 'active_plugins';
  s1 R; A( z4 @2 C" c7 a4 j5 ~1 G, h  k$ x8 D+ R! ?  r

1 t' Q/ m5 Q1 Q) ?6 b! L1 [  更改WordPress網站的目標URL
: V. m" _  M  H4 [
+ k% ~! X  J7 l% b9 s5 A  把WordPressBlog(模板文件、上傳內容&數據庫)從一台服務器移到另一台服務器後,接下來你需要告訴WordPress你的新Blog地址。5 z6 H! V( T* o* v+ z0 K1 \
: c2 o8 T2 {- S. |
  使用以下命令時,注意將http://www.old-site.com換成你的原URL,http://www.new-site.com換成新URL地址。1 ^1 j$ H" W2 G" b3 T

" Y- ]0 z9 g! S, |6 ~5 ]$ g  首先:: e* I; B! w, `/ A+ }9 G
* D) C2 E9 s9 y( R
以下為引用的內容:# ^5 x0 v4 u$ b8 i
UPDATE wp_options  
# j7 r6 m6 _3 a# bSET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com')
* F7 p; J/ G6 s* F* X9 FWHERE option_name  = 'home' OR option_name = 'siteurl'; 7 x# L3 K0 G  P; j
# Q6 z1 f  u4 T; @! Z; x) b, E6 s  ^

2 o" B) J* q' s/ e  然後利用下面的命令更改wp_posts裡的URL:: p2 b6 u7 A8 g) Y5 ~* Q

- f( Q( }& N1 Z8 B6 U( X以下為引用的內容:; G8 `- i' e$ T) N0 x
UPDATE wp_posts  SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);
; d$ q3 E4 \4 N0 W% ~# |1 `  T) B2 B% q& }7 S* d
) h4 ]% r4 p1 E3 `
  最後,搜索文章內容以確保新URL鏈接與原鏈接沒有弄混:
- t# Y, j8 J/ Y& P3 \( `& Z0 p+ i. E9 Z5 A7 O" @+ l9 [
以下為引用的內容:3 u% M/ i1 I) ^: D
UPDATE wp_posts  
# {9 M2 X# [+ f6 E4 V2 MSET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');
7 N5 Z7 R" I6 a- p+ [7 O, u# Z6 {( V: G  X5 S0 X
& d: z9 @2 n4 O+ L9 \  ^
  更改默認用戶名Admin
5 l5 w- P1 r: t9 D6 y! K! }. R8 B0 a/ L
  把其中的YourNewUsername替換成新用戶名。1 u8 Q6 S( `% E8 |0 n

0 u/ N' ?/ d7 q5 N* t4 G& s以下為引用的內容:  K, G: Z9 b* {3 m$ R) x
UPDATE wp_users  SET user_login = 'YourNewUsername' WHERE user_login  = 'Admin'; : C7 v8 B# i$ B: A+ X* C+ L% L

* i7 i7 @1 U" Y2 O0 o/ x! g4 t4 p) x' m! L
  手動重置WordPress密碼
: C: z( G, _2 a7 k/ A
8 u* m& A4 t) j* I$ p  如果你是你的WordPress網站上的唯一作者,並且你沒有修改默認用戶名, 這時你可以用下面的SQL查詢來重置密碼(把其中的PASSWORD換成新密碼):+ T" n* `2 ]+ g# q  ]) p: B6 y; Y" @
( ^. M$ c  Z( z7 z
以下為引用的內容:$ I& t! q- j. L+ r4 [' S6 T
UPDATE `wordpress`.`wp_users`  SET `user_pass` = MD5('PASSWORD') " I1 q. i! f" G9 {, v2 j
WHERE `wp_users`.`user_login`  =`admin` LIMIT 1;
3 u9 b3 q! o3 e+ j5 `1 U/ d' c1 ?3 Y5 H1 G
& y7 `3 G3 g6 x3 Q& H. l
  搜索並替換文章內容
# B. h0 U' |. O- [- }
- b0 m; o- I. H9 B& W( f" h  OriginalText換成被替換內容,ReplacedText換成目標內容:9 _; E. Y  ^) T$ |- @, ^# I

$ b3 f: e1 ^3 k' m0 G! `以下為引用的內容:" W# a" W: i, k& S9 `
6 D: m  L6 H' ^0 J2 D! k6 N# T* c8 O* ~+ U
UPDATE wp_posts SET `post_content`
1 I  C6 \3 H5 V+ p% S= REPLACE (`post_content`,3 T6 k2 @8 c( @; P; W+ L
'OriginalText','ReplacedText');
; ]/ J' G! s4 Y; ]+ b* g# Q7 K
* a0 b4 M  o1 S$ _" A5 s+ Z$ X3 ^$ ]. r3 m* H

7 e6 m" O$ b% {  更改圖片URL
% b& z/ [0 C) ^/ i6 c4 Q5 h# p3 h( i# B. P7 z2 e
  下面的SQL命令可以幫你修改圖片路徑:$ Q2 n" i3 ?! P4 q0 b! J( d. K% p

" j! I# ?9 x1 \3 ]8 O  s- @以下為引用的內容:
, Y$ o5 ]! g. P' B6 J  J, a8 r: F
UPDATE wp_postsSET post_content  = REPLACE (post_content, 'src=」http://www.myoldurl.com',  4 D% l1 o/ K+ @5 e
'src=」http://www.mynewurl.com');
發表於 2011-3-31 17:29:32 | 顯示全部樓層
這個要學習下,也許能用上
回復 给力 爆菊

使用道具 舉報

發表於 2011-4-1 14:42:35 | 顯示全部樓層
到現在也沒完全駕馭wordpress sql數據庫,慚愧
回復 给力 爆菊

使用道具 舉報

發表於 2011-4-1 15:28:39 | 顯示全部樓層
俺從來沒有學過 直接使用呵呵
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2026-8-5 11:14

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表