过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。  T8 H: p9 B+ b! C1 h- L& Q% y

6 c8 w  v3 e8 f( s) Q
4 Y& c$ ]; l! c3 V6 ^+ S- @8 ?. i
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID& W! M! J% q) L
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
$ b7 n, f- X% }  i( l  B7 Q1 F3 I/ Q
mattfox 發表於 2013-12-3 15:42 8 r% U5 l8 I, G2 d
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID

, O% a0 V6 m( Y% B, T7 o9 b$ E是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的
! c4 q/ c3 J7 X. M- v' K& S
- g1 M! D4 R5 C
8 L3 i# {6 u+ `
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
+ e" X0 n; ?  `! `& Y
8 j: A2 K) Z$ {- ]你可以把寫好的代碼放上來,我幫你改
, ~+ e0 {6 Y9 M! H
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.
; j5 }4 b! K$ X9 m. C$ I, M
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多) j: _: q) {5 }
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯
3 V4 o0 y) B. ~8 Q1 W2 T5 t- I* V; ?% k0 @0 u6 ^. ^
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。
: u/ {/ t0 l0 l自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    ; |& n' N- k* a7 Y) H1 K
  2. //數據庫參數
    : K8 e0 O; r/ z3 k
  3. $dbuser='';
    8 |9 |& u7 \5 D  q! |
  4. $dbpwd='';5 E; ~$ R8 {& I4 X% Z' W* T# G. h/ Y
  5. $dbname='';' Y' U/ i# g% ], D( p4 @2 Q
  6. $dbhost=';
    + j* |$ z; a3 U
  7. $dbtable='';/ {! I+ p: l& x, ?; {; M% v9 N$ R
  8.   ~# m, w' \* i9 p/ R
  9. //設置讀取路徑
    2 p/ U' |! Z; D( |
  10. $rdcontent='xxxx.txt';
    / Y) r- K% w. [3 y5 _# d
  11. $rdtitle='xxxxtitle.txt';4 t( }( \7 g5 D( {
  12. $rdlink='xxxxlink.txt';5 b& H% g& a# }0 S3 J2 r

  13. ' P* ^9 E/ G0 z% N( k! Z4 v2 ^
  14. //讀取插入鏈接,並設置發佈概率/ ^% C7 l, k" ]. ?3 {. |( [/ D
  15. function gen_link($rdlink){
    % o7 y( i7 w& S2 b' `1 f5 y  D  E: \
  16.         $data2 = file($rdlink);
    7 a$ D2 t. _* d. M' t! U0 E
  17.         $num2 = count($data2);
    * ^% E7 ?7 T0 [& x- c
  18.         $id2= mt_rand(0,$num2-1);
    : {' `# Q8 \5 R
  19.         $random= mt_rand(0,10);8 H6 h7 M! q8 y5 N* W+ V' U3 \9 u# n
  20.         if($random<5)
    ) t0 N0 k7 K1 l
  21.                 $link= trim($data2[$id2]);' c$ ^& @0 e$ @3 h; y: T. _6 q
  22.         else
    . {+ S7 l- _8 h  K: w
  23.                 $link="";
    ) n1 |( k9 r/ J: H
  24.         return $link;, Q1 e. p2 N( R7 h. `& X
  25. }" s6 `( D& e2 o1 E9 O# X: t" Y

  26. + s; ]' r' E6 q9 G/ f4 W
  27. //生成文章
    1 d; ^/ |5 _2 R/ M/ _5 `; s2 k
  28. $str = "";
    4 ^' u. @% t7 Y( k% c
  29. $title = "";- y/ P! u  I& n
  30.   [- r. a4 _& g
  31. $data2 = file($rdtitle);
    7 C( |, y0 M0 t5 a) F  }
  32. $num2 = count($data2);* g: S) V' O7 K
  33. $id2 = mt_rand(0,$num2-1);
      k3 H4 \/ [5 `1 ?8 B  x$ D
  34. $title = $data2[$id2];
    , \$ H6 p; B7 ?* O1 L* x: }

  35. ( i2 A* b4 E7 K. x
  36. $data = file($rdcontent);
    8 m* @: g( G, ?3 L' B7 U, \6 w: T
  37. $num = count($data);
    / f( g+ W( \  P* Z. n$ Y# d
  38. ( j4 u# b  B* ~) c
  39. for($i=0;$i<25;$i++){
    " U% ~/ t' m7 F8 o& m1 D
  40.         $temp=" ";
    8 H$ H6 E$ k) M6 C% w- u
  41.         if(($i%5)==0). \2 O7 J% b, Q& l$ j5 e
  42.                 $temp="6 o9 U# U- }  p  J7 d* N( L- q
  43. \n";
    8 y( m0 H5 y# U7 k' L" s) k" K' B
  44.         elseif(($i==7)|($i==21)){+ d( s) u5 h/ e& D' z% j
  45.                 $links=gen_link($rdlink);
    8 ], b9 N- }: z( |& `7 p$ t/ `* a
  46.                 $str=$str." ".$links." ";
    5 e: V- o- |/ M* P. n( R5 K
  47.         }
    . P- Y8 m$ k* X
  48.         $id = mt_rand(0, $num-1);
      C) d2 G6 f. v0 C: Y) \1 E+ D" W
  49.         $line = trim($data[$id]);
      _* u0 [3 q2 o$ l: Q  k
  50.         $str=$str.$temp.$line;
    ; U- Q/ i; `$ ]/ Z1 ^! v
  51. }
    : h" t+ q4 a& R* w! O
  52. 9 `0 c, N, f! j2 r. A
  53. //生成slug
    9 P% w! E, D# E2 N3 @9 |
  54. function generate_slug($len){
    & U. `" p: e+ e. Q
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';2 a) a6 W8 |) p+ k5 B9 {
  56.         $slug="";
    3 }7 _8 K: _8 s$ k) o
  57.         for($j=0;$j<$len;$j++){( ~9 X, l- u+ L7 t2 t
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];' C, q. T* _& s$ H: u+ K
  59.         }9 ]; @+ G2 }$ k% e) X2 D
  60.         return $slug;$ a3 G/ e: y3 N' A+ l" g- F+ v* D4 v
  61. }
    # b! L+ z5 Y  P* j- w
  62. $slug = generate_slug(17);
    6 F% |* t5 R3 i! |/ r

  63. 0 [- c' O& n! W1 y. ^/ b
  64. //獲取發佈時間
    3 I" S9 T$ b# [5 M
  65. $datetime= date("Y-m-d H:i:s");
    $ c- {$ U1 r: J

  66. 5 Q' C9 Q9 O' y) r* G9 t' H
  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')";# v4 A6 B2 B3 k

  68. ) v! q" d! h& V# }+ ~# z  ~  z: Z
  69. //連接數據庫並處理數據
    , N4 m0 m- I6 W; ~  H5 {
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);/ b8 Z% S# @2 j6 ]" t
  71. if(!$con){+ e& g: }7 L, K9 z
  72.         die('Failed to connect to database! '.mysql_error());+ l* j% ~0 S; ^+ ~2 @. F+ H$ k
  73. }else9 U; z/ _- o! p' V3 }0 m
  74.         echo "Suscess to connect to database!
      S' a7 i- \( g7 r' @3 @& \5 Y0 E
  75. \n";( \2 S& C2 V6 u7 _0 l9 ^
  76. ; |( Y7 t# W" T) _: @4 c, B
  77. mysql_select_db($dbname,$con);
    9 V4 k+ n, U; Q# q9 u
  78. ; u1 O0 Z7 z6 L( M2 Y
  79. $result=mysql_query($sql);( [/ B& [6 q: W' h

  80. - e1 ]9 o2 u# D: C" T) V
  81. mysql_close($con);
    1 l3 ]( ?9 }: _0 p1 M) R* w: E1 S
  82. 0 i" y5 p1 y5 h; F1 r) @3 d6 I
  83. if(!$result){
    ; l' o7 @+ L( R# \
  84.         echo $result;
    * i* `! {+ ~7 E+ b# _, j/ ?
  85.         die('Failed to post article! '.mysql_error());& A5 t3 w9 C: {
  86. }else, t  \+ l; \6 ?# @* T5 J5 j4 i! p
  87.         echo "Suscess to post article!\n";# z* [+ ~" F# L
  88. - U& c, E% j2 g! A, {, i* _$ \
  89. echo $dbname." is done";  X: p* \0 d  C# {2 d

  90. - V/ N* t/ r1 V' {5 N- O+ T0 D
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。- T2 q' K8 }9 p5 ?

* B2 @. x* F& l4 v" h2 F文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。4 C4 n/ f; t. R2 l# ?, b

" p0 Z5 B# s+ w/ P7 p$ p8 w如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。
. C+ \" `' V5 s( `3 H2 a( @這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
8 H# ^: b- U( e4 N0 g# ?/ @
* Y+ D( g: n4 ?, L; g- m" J! M  ^2 J0 S7 `3 ]

2 q' u' e9 D- y9 @, J2 L; Z, J- v6 w% g7 a2 F. F3 O" b' H) o
回復 给力 爆菊

使用道具 舉報

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

  1. 3 J9 T) y* @7 X) M2 K: x
  2. <?php
    7 }  s9 M: T8 i" t0 F! W+ p
  3. //數據庫參數( c/ o2 u0 Z) O7 C( U
  4. $$dbuser='';
    , x" a7 J6 ^! L7 F5 A! \
  5. $$dbpwd='';
    9 h- H7 U1 O4 Z0 E
  6. $$dbname='';0 E$ l7 c2 S3 e: B: x
  7. $$dbhost='';; ]2 `  W' k$ V6 I" i% d! M' e, A
  8. $$dbtable='';
    # ?. Q2 B' U3 z: W

  9. ) @0 |, T9 X3 C, I% b  C& ?; {
  10. //設置讀取路徑
    9 C% K/ k- l; ]" Z, [$ g
  11. $$rdcontent='xxxx.txt';: l( v: C5 ?; [, ?) U& S) k
  12. $$rdtitle='xxxxtitle.txt';1 p3 D: z6 Z6 R2 C4 t4 o
  13. $$rdlink='xxxxlink.txt';' c! x1 D( D/ M$ l

  14. 9 ]; N( r+ Z; X' ]7 b# X4 A: @, J
  15. //讀取插入鏈接,並設置發佈概率$ i1 [7 l4 o' e3 E: L" G9 ?! x
  16. function gen_link($$rdlink){5 n9 R) N. y1 c. h( H7 S; a) f
  17.         $$data2 = file($$rdlink);8 @# o, a4 W" Q3 [' e) {
  18.         $$num2 = count($$data2);1 z/ q/ F) X& B+ l% g9 C
  19.         $$id2= mt_rand(0,$$num2-1);4 s0 a7 @- I5 }
  20.         $$random= mt_rand(0,10);6 c: ?' i/ i! C# a
  21.         if($$random<5)
    4 o, `& g3 y7 |: _& v7 h, ^
  22.                 $$link= trim($$data2[$$id2]);
    8 A# f0 w. ~# J# Z$ G) f: [+ K
  23.         else
    8 A9 w8 |6 U7 q* G' m; p: V' a, _
  24.                 $$link="";% Q, ^3 d7 B5 |$ E
  25.         return $$link;
    2 j" {# T" l- s" z* K" o
  26. }
    ( R! t& ?- c5 l0 u/ X- b( J; y! |6 F6 G
  27. + C, j2 J. d6 o/ c* g) i
  28. //生成文章, B* z, E( Y& Y& ]9 h% w, X7 _
  29. $$str = "";; B( T4 \: i/ t8 x4 h1 |9 x
  30. $$title = "";+ I$ ^" k1 u4 T" C

  31. , Q+ A4 j5 S/ j: v' ?6 }' ~
  32. $$data2 = file($$rdtitle);+ E& G  |+ r( \* i% m  P2 }
  33. $$num2 = count($$data2);, b7 t+ C$ C5 D; o7 @* f. A  ]% i
  34. $$id2 = mt_rand(0,$$num2-1);. v( }" K4 ?0 l; X6 K# `% i# t
  35. $$title = $$data2[$$id2];- Z0 R  x* L) l; |

  36. . ^' P  H6 D8 f% E2 F1 P
  37. $$data = file($$rdcontent);
    4 J3 J' Z3 R/ q5 _' z
  38. $$num = count($$data);! {+ w3 U' I: l
  39. ) M& |2 F' }' h& L! y
  40. for($$i=0;$$i<25;$$i++){
    ) E" `& I9 D+ w- S% \3 D1 \
  41.         $$temp=" ";
    / {. L; |* Y4 z- v) w& k& [9 u1 Y
  42.         if(($$i%5)==0)) P, T) P8 f2 [% E$ r% ~
  43.                 $$temp="
    ! m8 q2 V3 M" r( t
  44. \n";2 B2 m3 _) T& h$ Z
  45.         elseif(($$i==7)|($$i==21)){  \+ G8 R5 U* B. z$ a) s
  46.                 $$links=gen_link($$rdlink);
    ; o1 c( e, c* ]
  47.                 $$str=$$str." ".$$links." ";
    : s7 M4 Y$ b6 V2 {- o4 g
  48.         }/ d2 a1 K4 S8 G* x( b$ X
  49.         $$id = mt_rand(0, $$num-1);. I/ Z7 S2 r, {1 c3 S
  50.         $$line = trim($$data[$$id]);& Z  b! H7 F& U8 Z% e
  51.         $$str=$$str.$$temp.$$line;, D+ C* K7 F# N9 z
  52. }0 u: u* \4 V* o& T

  53. ) M/ P. @% t4 k1 T& o( @. n$ \
  54. //生成slug5 m* U  k7 B( O! ~8 h
  55. function generate_slug($$len){
    " \  t( s& l( L; l
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';, H& z) {+ y& ?$ L+ x5 U4 \" U
  57.         $$slug="";7 A( t; i5 A) K/ X6 K# ^
  58.         for($$j=0;$$j<$$len;$$j++){
    ; c% L* Q  R: q$ M3 X8 a
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];; P- a1 d5 `$ Y; I. M  E! @% x
  60.         }
    " `# @) p/ d& ?0 @) h2 M7 o" e
  61.         return $$slug;- f( ^6 q" I7 ?2 r" @) R7 l
  62. }! B8 r, x2 t/ p1 Y8 j4 r$ L6 z
  63. $$slug = generate_slug(17);
    ' m, @2 M3 P0 G7 s" f& r1 t

  64. ( @/ K) X. u0 ?5 }" e( M; z7 ~
  65. //獲取發佈時間2 A* h. t+ j4 Z0 ]/ G/ q  @
  66. $$datetime= date("Y-m-d H:i:s");
    - W! L0 S% v+ B# R! G' c& f2 d

  67. 3 P6 J" f: w: e- |3 U8 q/ L" X
  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')";3 |+ d% j2 F9 t# N
  69. " y5 g: w5 {- T& C( j0 I8 f
  70. //連接數據庫並處理數據  {1 F6 v2 C8 I! O) m
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);! H' K4 l; }2 P0 T6 G: U0 x& ~
  72. if(!$$con){: E3 ^- j: G3 C) b
  73.         die('Failed to connect to database! '.mysql_error());5 A; q7 i- v2 c( D2 |
  74. }else+ ]4 @5 x' g2 c& `
  75.         echo "Suscess to connect to database!, d) q4 i7 X& Z1 v( W( L" ^# ~, }% L
  76. \n";
    ! T: q) Y% k6 T0 x; D

  77. 2 l  {' y* {! F& b* m2 {
  78. mysql_select_db($$dbname,$$con);& N4 C/ M9 K8 l$ ~
  79. " [3 k2 w; e; G- y' h# M
  80. $$result=mysql_query($$sql);
    ! n1 T! z: s2 @# |2 n) j5 a
  81. , w' I# o( n  O3 ?
  82. ) I" x1 d: ]$ M) d, I
  83. //前面已經插入,獲取插入id! g2 v) Q+ r! U
  84. $$insert_id = mysql_insert_id();% y/ h, l% x! C3 }9 G# b! w

  85. 8 x. a: r# d+ S" p1 y$ J7 `
  86. //繼續插入wp_term_relationship表
    ) k( q& s  v+ q' L; r# ^
  87. if($$insert_id > 0 ){7 E; M6 K4 f, `0 f* P' J* |
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";
    ( u+ d  h2 R2 H  H$ t/ ]

  89. % a( a; `/ o5 ~0 b# g
  90.         $$result=mysql_query($$sql);( O: M, ^+ m9 `! L
  91. }4 l+ r' `8 Q8 y2 ]
  92. //關閉數據庫連接8 z3 @6 M: V4 k2 X; u& ^/ N; X0 t
  93. mysql_close($$con);2 k. w/ ]/ a6 u4 C1 e8 l2 `# m

  94. ' j# W, ]5 E0 {* l2 n! M

  95. 4 A& Q9 [# c9 d

  96. + c% E% t& ~( o" s8 C# M. l  D
  97. if(!$$result){+ ~0 [  |# f& v3 o# T3 T
  98.         echo $$result;5 z: P5 @4 `, n3 J
  99.         die('Failed to post article! '.mysql_error());. `) }# |) p& z) \
  100. }else
    7 l, W& @  \8 W& [6 Y
  101.         echo "Suscess to post article!\n";
    4 p1 y- P4 }) U3 P: |3 ], p
  102. / J+ Q+ W6 s3 b5 ]1 Q* J; ?
  103. echo $$dbname." is done";- n8 ?4 t+ L; D. t6 E+ ]; Y

  104. ! ?3 W& h, n& p/ j' z
  105. ?>3 S3 ?/ U4 U4 e. k

  106. ' o$ e. W: u! s/ s

  107. : [& T1 n( e/ X1 G9 N) b! p3 `

  108. 8 M& v8 U* Y) S3 p, D
  109. 2 Z1 h% [% j7 a- X- g
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob
- T2 o7 T2 F- ]
) m; U1 U, Q# Y  h6 v4 u' W. Z
1 X2 r3 _+ V5 o3 s, z( Z! F+ R如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢# O& W- j( j, Y
前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢
& T7 S% e: Y) @" r* J; _( ]# [  |7 J% v5 z

評分

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

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題
! G% l3 U5 I5 y" c8 w
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.3 t6 a$ w( I+ Y6 t
你可以查看mysql那幾個常用的指令。, o6 U1 l! H. g( c# A. J
/ b7 f7 x% P0 A
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

过期高净值品牌域名预定抢注

4um點基跨境網編創業社區

GMT+8, 2024-11-25 09:49

By DZ X3.5

小黑屋

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