过期域名预定抢注

 找回密碼
 免费注册

關於通過Mysql語句發佈文章選擇Category問題

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。3 k, ?2 l! {3 d3 l- S, L
- t9 P% G6 q( ?% [/ J# Y5 C

+ u+ G$ [3 F1 j4 c
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
0 k2 c: z+ `: x8 {3 b
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯 2 }) i( {( g) U* C
mattfox 發表於 2013-12-3 15:42
7 Q3 ?# J* D; x在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
' J4 q% a% l: I! `" s7 x
是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的; _. P4 b  Y; s4 s) x
0 j+ h1 @: {. r/ i

, z; A$ ~/ V/ p9 z2 r
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
' _# G  s4 K' o, q. G9 N; g7 H
你可以把寫好的代碼放上來,我幫你改6 h) q, u0 m6 [9 l5 t6 c$ k. a
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.0 B, I  o+ f* E9 W
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多
0 y$ k& G4 H: F. B
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯
7 R: U+ ?: d5 s2 ]" Q& G/ z9 p( b; T4 [% Y
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。2 w3 G; ]) Z, I* N+ @' Q
自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    * R3 S2 H3 S6 u
  2. //數據庫參數
    ! m2 T$ R1 F9 r$ O5 F1 Z' d1 z
  3. $dbuser='';1 E% W0 `' q; ^$ z
  4. $dbpwd='';" s( l$ |: o  O  G6 H1 G
  5. $dbname='';$ X0 l2 A: r6 W, G$ D5 _2 ^
  6. $dbhost=';
    $ o. B& ?4 E! o1 \9 [& j
  7. $dbtable='';" @7 W- @# }& d9 E# j! n

  8. % s5 [6 o2 a0 Z0 q4 e' }/ R9 @/ L
  9. //設置讀取路徑
    % N" U3 G/ F6 j* t3 o& h2 y1 _
  10. $rdcontent='xxxx.txt';. f) C/ @; U* A2 H' @
  11. $rdtitle='xxxxtitle.txt';% @2 k+ l( x8 f+ D& Y
  12. $rdlink='xxxxlink.txt';+ l$ D) c# N. l" ]8 b$ t) `

  13.   Y" P( G1 n3 {- r5 `* U
  14. //讀取插入鏈接,並設置發佈概率. z# |3 V* a% i: i+ K/ W
  15. function gen_link($rdlink){
    $ p- w- [* V, i. W4 x
  16.         $data2 = file($rdlink);
    ) C4 W5 v* G7 S! n: p) H
  17.         $num2 = count($data2);' Q2 A/ b5 p3 o) r( o6 t8 B- U; K
  18.         $id2= mt_rand(0,$num2-1);
    ! g7 p' G% Y# s/ @
  19.         $random= mt_rand(0,10);
    5 p) V! |$ c8 U  j% l$ m
  20.         if($random<5)( V& x* l+ g" I  }' \4 ^& \4 M( [
  21.                 $link= trim($data2[$id2]);
    , Y* ^. Y4 V4 @' u0 j1 u% s
  22.         else$ M) l1 Y* {# m* D) j
  23.                 $link="";
    , ]0 u' o+ P6 m8 |0 V
  24.         return $link;
    : W4 ]% J. |6 K6 \6 V: Y- B) \1 Z3 x
  25. }7 ]! u' t% k, N1 {2 D' C. ?

  26. # f2 L% }$ |7 z
  27. //生成文章" O, z4 U3 V! i( w- f  \
  28. $str = "";. i0 c$ \; L" j" O" f
  29. $title = "";
    8 l5 M8 f9 @4 w# U7 ?

  30. 6 W* N. [# |$ |& n, D
  31. $data2 = file($rdtitle);
    8 I8 b. `& [# [
  32. $num2 = count($data2);' i5 K9 e( [$ [% O/ t* {$ p0 t. n
  33. $id2 = mt_rand(0,$num2-1);
    5 p. H$ i" _7 V& R
  34. $title = $data2[$id2];
    % \" \+ n8 f0 [; ~3 u, Q# l

  35. 8 S+ r! \3 ^/ J6 z
  36. $data = file($rdcontent);
    3 z  B0 n  T6 n4 p" F( r+ M
  37. $num = count($data);* n% f9 K# [8 n% j5 I% o* d. r, Q

  38. ; b, Z9 m2 K6 C# {0 W. D) c
  39. for($i=0;$i<25;$i++){
    - \" Q' `2 d# d& p/ \0 d
  40.         $temp=" ";# h7 S; q" i5 d3 V
  41.         if(($i%5)==0)4 L/ N5 r/ |. z* K
  42.                 $temp="( }2 T& {/ O7 S7 f' S! x: H
  43. \n";9 a, T7 f4 o9 v. f
  44.         elseif(($i==7)|($i==21)){( i5 }. P0 H' u! Z" J5 n
  45.                 $links=gen_link($rdlink);
    / B  S9 p$ i7 {2 A( A( {- l' t
  46.                 $str=$str." ".$links." ";, x; q' M4 E7 \7 G, i8 d* i
  47.         }
    ! D7 a3 ^7 k* b, L) j' u
  48.         $id = mt_rand(0, $num-1);1 R* C; `) E( Z* x
  49.         $line = trim($data[$id]);
    * A" c3 L* J7 e$ R' r) Q
  50.         $str=$str.$temp.$line;" {* S# E- j( X+ y4 i  u. c% a, ]
  51. }
    # @1 L' T  G/ V- }1 ?  i9 n$ O

  52. # Y- B, u3 ]9 N) H( n4 U
  53. //生成slug
    * O) H6 O" k. ]% k  }7 f
  54. function generate_slug($len){3 a1 w# t( B8 ^" m
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    : x$ @% L) O4 S9 j/ f& ]/ n' J' v
  56.         $slug="";9 K* X9 ]9 @+ }. a# _' G( M& M8 u- S+ j
  57.         for($j=0;$j<$len;$j++){
    ) @9 H+ u  X, h! f3 V
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    # R& G/ Z, T9 g" V
  59.         }
    . k/ h( I4 N5 N* X
  60.         return $slug;- u8 k0 j2 q2 F2 h& L; r2 z
  61. }
    " j; ^! L& p- r" D1 B6 e
  62. $slug = generate_slug(17);
    " K" O/ n( A6 p4 V( y2 z% Z
  63. ! y2 @( s2 ^; H
  64. //獲取發佈時間
    ) b9 o* m# H7 _6 l
  65. $datetime= date("Y-m-d H:i:s");- k  Q! J8 N" j/ R7 y1 @0 W) ^7 j6 m. O

  66. ' a2 J7 m$ F' F
  67. $sql= "INSERT INTO `$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$datetime', '$datetime','$str','$title', '', 'publish', 'open', 'open', '', '$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";& A  x6 V) h7 D& {6 c
  68. 8 u" d4 R" _* j4 M/ V/ E0 U
  69. //連接數據庫並處理數據# @: l2 E4 A9 b7 E- \; @- X
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);
    - C# o6 b$ x0 S4 G3 b3 e
  71. if(!$con){3 H, W0 t4 d, T3 @
  72.         die('Failed to connect to database! '.mysql_error());( b5 ]2 d8 w1 V8 u8 |
  73. }else
    : _+ v% p% |% n
  74.         echo "Suscess to connect to database!
    ( t" D! t  |2 V0 E  d
  75. \n";
      R) K+ @. ^3 a( a
  76. ; K# p' p$ a! N6 B- q) ~; o$ L
  77. mysql_select_db($dbname,$con);
    ) y! f) c/ Q: |) L* x

  78.   p4 C( s7 }! d" j
  79. $result=mysql_query($sql);
    ( ], Q/ R3 o; {/ w% c5 u
  80. , R. b: e) M: L0 O3 t
  81. mysql_close($con);- N" p  l$ M  Y+ B6 ]  X

  82. * [( S5 p- f3 r: [
  83. if(!$result){
    " R6 h/ @3 u% a9 ]! G' G8 b
  84.         echo $result;
    $ n! x9 C% v/ ?/ g7 \& f* ~0 d5 W
  85.         die('Failed to post article! '.mysql_error());$ d2 R8 u; \5 ^2 r3 ?% `9 j3 Z
  86. }else. \& |5 B8 V- \7 E
  87.         echo "Suscess to post article!\n";3 [* b! X7 c: i+ x; C5 z1 d5 R
  88. * y) o4 ~6 G6 g
  89. echo $dbname." is done";: I* ]8 j# }, Z1 e
  90. - F' m- v' l+ J6 p
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。8 a9 h3 D* x* D. U7 v9 _

. [" z+ Q5 s* S1 b5 g1 G. k7 ?" F9 A文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。
! R, V2 n$ Q9 L& u3 K! Y6 O) p9 U% e9 q. B- w; ?* c
如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。
/ \0 @* ^+ b( ~3 H$ j這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。& e6 A; D; W' [2 B
% r' h  M( ]) H( A4 L
$ C* Y7 F9 u8 A$ x* e/ _
" d1 H7 ]! C' @& Q5 }1 D

' N' p# v3 t: R5 S! W" K
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層

  1. 0 I0 T  E: L% D2 X% L- o
  2. <?php
    " m+ J2 N& q4 r  m, ~
  3. //數據庫參數
    0 S7 D( o; X$ N- M
  4. $$dbuser='';
    3 v1 ?* N; k  [
  5. $$dbpwd='';# \+ M& @; `3 p* {! X& p7 y) l
  6. $$dbname='';
    1 E! D6 O* c* l" K0 d
  7. $$dbhost='';
    " I. ?. d8 z5 f$ W
  8. $$dbtable='';
    # I9 b3 m! w: t, `6 T+ Z2 d* @7 R
  9. ! s, b6 Y' Q; G0 l! l
  10. //設置讀取路徑+ v: I# w6 p5 O4 i. F  G- q2 X
  11. $$rdcontent='xxxx.txt';9 B! `1 n5 v1 e: w' ~
  12. $$rdtitle='xxxxtitle.txt';# I& X* E; @7 f# d% U) u" l' X( i
  13. $$rdlink='xxxxlink.txt';" e% C$ o* e/ S. a# O9 }4 |# i$ F

  14. - g( [# z# Q0 K  U
  15. //讀取插入鏈接,並設置發佈概率
    ( D' C1 B/ O0 m
  16. function gen_link($$rdlink){8 H6 X" |* B( [5 Z
  17.         $$data2 = file($$rdlink);7 U9 n! B( X! i; E. I7 F
  18.         $$num2 = count($$data2);
    # s: ~& c2 h7 S* P  U
  19.         $$id2= mt_rand(0,$$num2-1);+ F6 u/ Y! f3 C/ }% o& y
  20.         $$random= mt_rand(0,10);
    # l% Y- o" F  O. R
  21.         if($$random<5)
    % Q3 X, I& h3 e" `- u% S% `& H
  22.                 $$link= trim($$data2[$$id2]);; W, F7 `. q0 g3 Z6 o+ e6 f
  23.         else
    % Z% ]* L( n' a' J: i; N
  24.                 $$link="";
    ' S+ F! j- X! T9 C. |
  25.         return $$link;
    ! c* b; U8 J, R3 g
  26. }
    1 V" d, H* ?* ]4 [1 E* z! s& v3 _, q
  27. $ b, P+ d% y. U) A; L- g
  28. //生成文章
    9 |! v$ t( h" i) G2 F, ^
  29. $$str = "";) ^  V. A. s6 V1 A) e1 b( L
  30. $$title = "";
    ; }! ]4 L# c+ r5 ~) K9 ^; O' t. d

  31. $ ~% @( j1 s5 S4 M* G9 K1 ~: i$ D
  32. $$data2 = file($$rdtitle);$ r9 l4 Z5 e" Z( l) ]# Q* {. t
  33. $$num2 = count($$data2);
    $ w$ L" H% h4 p/ e0 Y
  34. $$id2 = mt_rand(0,$$num2-1);. o* _) f: f* {5 g3 a3 ]
  35. $$title = $$data2[$$id2];
    6 E* Y5 G5 \0 u6 }8 R2 G
  36. , S8 S  n: S# `& W6 P' M, X
  37. $$data = file($$rdcontent);4 E' N' W6 t7 w& \1 I, a- J6 s
  38. $$num = count($$data);
    $ m: i3 [- X4 m
  39. ; V4 Y: \, ]% N- Y2 f0 j; b
  40. for($$i=0;$$i<25;$$i++){
    6 O: y0 v. k  w- ^. _
  41.         $$temp=" ";) k; [* ?2 u" w
  42.         if(($$i%5)==0)
    & A; G8 e" t+ t+ A6 m7 i
  43.                 $$temp="
    ! m. o) _( @9 g8 f( p! K& T3 z
  44. \n";
    2 ~9 f2 V9 V$ k: V
  45.         elseif(($$i==7)|($$i==21)){
    ) m7 i" s4 `; {7 ~% J' L8 N
  46.                 $$links=gen_link($$rdlink);
    * x1 w# N$ v! J; q# A9 l
  47.                 $$str=$$str." ".$$links." ";
    3 j% j3 z6 C( h
  48.         }) I1 V( g# w! [/ z
  49.         $$id = mt_rand(0, $$num-1);: [# T& r/ s, H! i6 Y8 B' d7 s
  50.         $$line = trim($$data[$$id]);
    1 g' q3 ], b, i3 ~7 S' [2 H
  51.         $$str=$$str.$$temp.$$line;
    0 m4 r( z3 z' Q. H! ]
  52. }
    % o' N2 B+ K6 s/ Q2 _0 `, {

  53. $ b- v% g# R$ M$ k9 L: i2 S
  54. //生成slug
    8 f+ m* n% U' p) A" z4 b! E
  55. function generate_slug($$len){" b" Y9 T$ W- X, p; b+ N
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';6 d, i, g' x4 G+ g; _7 W
  57.         $$slug="";
    % M7 L% h  b( N* K, V
  58.         for($$j=0;$$j<$$len;$$j++){7 P+ B1 @& h' E$ B3 d) n
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];8 \3 m/ k4 Y" x# _
  60.         }+ S- }- t& s/ j( m6 g2 ~4 j
  61.         return $$slug;. p! c* k$ o" {5 u) P
  62. }; j- r" q8 K% H+ M+ n: \# |
  63. $$slug = generate_slug(17);
    6 y6 C% ~, ?* v. p% E1 }4 S
  64. 4 V" H6 m0 i, M3 ?# ?6 y0 H( {
  65. //獲取發佈時間3 _5 c7 F! q1 L% j" h# x# M  W% s
  66. $$datetime= date("Y-m-d H:i:s");
    / e4 O' j( j* v6 M, r3 B  `

  67. 1 D2 A; E8 d  `$ `; b- y7 [" p1 w
  68. $$sql= "INSERT INTO `$$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$$datetime', '$$datetime','$$str','$$title', '', 'publish', 'open', 'open', '', '$$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";9 H' u$ e7 ?, Q) X
  69. ! L+ W2 H. X$ _3 b
  70. //連接數據庫並處理數據/ [1 K* F! F6 F
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);' w8 m: o9 v9 W5 o5 h/ s
  72. if(!$$con){
    9 G- F) C4 f5 i
  73.         die('Failed to connect to database! '.mysql_error());
    $ Q; J* X, b9 x2 x8 r* \
  74. }else: o4 F  E! Y: U
  75.         echo "Suscess to connect to database!4 v9 p1 v) @6 m% U
  76. \n";- X2 X5 ?. u5 {8 Y9 ?( c

  77. ' Q; d6 [$ r& }4 ?0 M  \) l: m5 ^
  78. mysql_select_db($$dbname,$$con);
    4 s; e, @& K$ X) q8 w$ C% z

  79. $ i) \+ _3 \5 m, _  o
  80. $$result=mysql_query($$sql);
    5 P/ Z& c: x3 Q0 y1 N% Q3 j9 w

  81. 6 a4 ~0 X) s& a& r0 d3 z( Q) J
  82. ) [6 K& E; \$ b) N9 n
  83. //前面已經插入,獲取插入id+ }! ^% d! i, x9 Q: D( Z6 ^: w
  84. $$insert_id = mysql_insert_id();' z" \# ]) ]2 L8 F1 ^$ g2 L" t) S# j
  85. 4 `" X- f2 }. @% {5 i
  86. //繼續插入wp_term_relationship表( ~  i$ u* o) k; _- ]
  87. if($$insert_id > 0 ){
    # Y1 z; L$ N* J2 H  i! i
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";  M+ n* [3 _& q

  89. & l' ~+ P* b7 k+ i& M1 U. f
  90.         $$result=mysql_query($$sql);
    $ E- k# m4 n' N
  91. }7 T( R/ ?. U2 A6 l
  92. //關閉數據庫連接
    4 X5 U1 ^9 _, K
  93. mysql_close($$con);
    7 S5 x1 R6 o" p4 H- T5 B" R
  94. 8 u* `5 S4 J4 y5 _0 Z, l, a' @

  95. 5 p, h. w2 e: U, p$ G1 p5 ]5 g2 K  F

  96. 9 f) S' ]& R) {( ]$ u3 h' W$ g
  97. if(!$$result){' W0 n' i  @, n& L/ ^; c" M
  98.         echo $$result;
    0 `$ W4 N8 l6 Q% I$ y. n
  99.         die('Failed to post article! '.mysql_error());
    $ w3 J5 r8 ?& V( J/ d! B/ O4 r
  100. }else* n  A" [. k( Y- W: m
  101.         echo "Suscess to post article!\n";* w3 l4 }: |! H) B

  102. ' r: r3 f% _# _! `5 d# u
  103. echo $$dbname." is done";
    * W2 y& B% A- w% W0 r- t7 m* [
  104. 3 P# }( I2 S  t
  105. ?>* j+ P' E, e; M+ ^! w! ^
  106. + B& ]* @" X8 y. E5 Z
  107. 2 \7 ~; F- a% Z0 R+ U% `) m

  108. ! N! R) Q% j$ T5 U

  109. : H' N7 E; G; Y/ s: u  q" Q
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob8 f4 r3 w! _9 ]. n& Q6 t
- a7 g" Q7 ]$ s/ [

) n2 w- n* o, Q6 f4 h如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢
% k1 m0 _6 p8 K: s! V6 l9 J9 z  D前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢- A& h: `( K3 o

$ \* h& R2 B: h7 ?

評分

參與人數 1點點 +4 收起 理由
hudba + 4 admire;)

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題
1 S/ @) \6 A" {  D9 r
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.
: F& f+ ~, i9 e' b  ^! d1 d你可以查看mysql那幾個常用的指令。
/ ~, k8 u8 y" J5 j* G+ ^; V( v: N* P3 ]: q
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

點基

GMT+8, 2025-11-26 13:11

By DZ X3.5

小黑屋

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