过期域名预定抢注

 找回密碼
 免费注册

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

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

% A4 Q: P- q& b, B7 j& v  x
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID. |+ Q0 j2 o5 R; s, a0 x
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
. x. S6 ~, F% D
mattfox 發表於 2013-12-3 15:42 + J' }7 t; |3 F6 S& E2 B/ e
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID

7 b9 x* ?) r' x0 B2 ]1 ~% e$ ^是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的% i  x" b( g, \* v! d, Q
. |4 p) y9 n+ e8 q

0 [+ s% r( K& |. e  H4 i& k
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
8 h: g- E/ A) @! d  Q$ q+ u6 L- v  t2 Q) O
你可以把寫好的代碼放上來,我幫你改1 j9 m, F6 l) @; T0 l
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.
4 n2 v- a' W+ O- ]7 `! l
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多
' h2 O6 b/ i$ r9 o
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯
. ]8 r# h, B. }" [- m- U. e8 z2 ^" T/ g9 h0 c
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。/ q/ R. r0 `. v
自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    / }+ V7 s0 Z# m
  2. //數據庫參數
      g( q. q' Q: ~. b
  3. $dbuser='';
    3 F$ m( N" l; Z9 G8 t6 n+ j! Z
  4. $dbpwd='';
    2 p3 |2 {; I1 F+ k/ Y5 C
  5. $dbname='';
    & u5 k0 m! ^$ r, I4 I6 A& z: m& g
  6. $dbhost=';  Z/ v7 c# d& w& Z6 ^
  7. $dbtable='';
    1 S; G% y2 m+ }2 v
  8. " O0 O  N! i! c6 Q2 S
  9. //設置讀取路徑
    7 C6 g) u: _% ~" r, v8 J& G
  10. $rdcontent='xxxx.txt';
    : F( A2 R' W$ j% ?$ U
  11. $rdtitle='xxxxtitle.txt';" W# f5 s, E$ ~% t! h) a
  12. $rdlink='xxxxlink.txt';# _1 J1 Q3 b& Z) P( @+ r0 [
  13. 0 j( \; m% N0 t! L3 f0 G4 q( T
  14. //讀取插入鏈接,並設置發佈概率
    2 Y/ k+ W8 V5 c) i8 N" K
  15. function gen_link($rdlink){7 C0 r+ y1 r, i. {
  16.         $data2 = file($rdlink);
    ! y# z3 j$ W$ H% ?: b; K0 ~
  17.         $num2 = count($data2);
    8 ~! b$ h5 l2 j! i
  18.         $id2= mt_rand(0,$num2-1);
    " r" t6 F2 M1 J* U8 r
  19.         $random= mt_rand(0,10);
    1 W+ M9 p2 d- h
  20.         if($random<5)8 k: h1 `% D  Q3 S9 W% s9 U! L
  21.                 $link= trim($data2[$id2]);) F- [0 {  Q* K/ S$ ?- [
  22.         else
    - {. M3 i( [8 Z# D
  23.                 $link="";, y0 h8 {. e: S/ T
  24.         return $link;
    ' i; U$ x; f9 j% u' ?
  25. }5 G7 T$ R$ z) r( _. O( x
  26. & [! ~  I& }0 B$ d6 S+ n2 w3 B2 V
  27. //生成文章2 f8 Y3 v. H- E2 k& F( ?4 R5 m
  28. $str = "";, W$ z' L" L& |  @
  29. $title = "";
      b- x: ?% q7 I% I5 I5 }( g7 O6 c; K

  30. - |$ J# L& Y4 c& G# U8 B* q5 r
  31. $data2 = file($rdtitle);
    7 b( l, O; F( g, l, _
  32. $num2 = count($data2);
    1 j# ?+ {3 E: v& {8 K
  33. $id2 = mt_rand(0,$num2-1);& q2 R9 z/ j2 b& @
  34. $title = $data2[$id2];
    4 G' C& \, s) ]4 i  k. |8 C

  35. ; |3 F0 g/ E/ H
  36. $data = file($rdcontent);( ]0 c  k  s4 g* w
  37. $num = count($data);6 s8 W0 j, W0 J: O9 J
  38. 0 _2 B# ]5 a1 q% {* m; U
  39. for($i=0;$i<25;$i++){5 X" ^+ Y5 R- l, v4 y* C3 {
  40.         $temp=" ";
      Z. F/ S3 y  ^" d& M/ g( |
  41.         if(($i%5)==0)
    . E% T' U$ z% S' c; W. U- _0 E3 ]
  42.                 $temp="
      W4 J. N: k( J) ~& Y1 e
  43. \n";1 }6 R/ F& a! q3 Q& u
  44.         elseif(($i==7)|($i==21)){% o2 S6 v6 r& Y/ A" D
  45.                 $links=gen_link($rdlink);# l% a: e8 Y7 a+ O6 \+ h1 i) {
  46.                 $str=$str." ".$links." ";
    ( B* o% y+ j2 \0 j7 @5 {) E
  47.         }
    + `6 Q( Q; v, u& ~* F: ?& K$ p
  48.         $id = mt_rand(0, $num-1);. L* ?, c( k& n* q, c
  49.         $line = trim($data[$id]);- X  e2 W$ l! }) b) f% k
  50.         $str=$str.$temp.$line;
    / w' D  @: }7 _
  51. }4 E2 @% D' l6 b7 z. m

  52. + o. O3 j/ M4 n4 P4 z
  53. //生成slug
      p, d/ K' y& \2 |; ?5 _& Y
  54. function generate_slug($len){
    2 j1 _' `- v2 d# F. B5 m
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    5 t0 F8 y3 x3 A5 S
  56.         $slug="";
    8 G# {2 [' N) T* ]
  57.         for($j=0;$j<$len;$j++){. H4 f6 [3 `, n/ {3 N1 v" A
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];% c. M$ X' m( Q) g7 n" {
  59.         }
    / h2 B5 j8 }% Z  u$ m
  60.         return $slug;
    2 `6 U+ P( [% {; q8 B9 d) G4 Y1 X
  61. }
    # A+ g3 l3 d" ^3 x+ w5 h1 F
  62. $slug = generate_slug(17);
    8 |$ A  B- _; ^+ A- s" X7 s
  63. - W  n  ^; }6 j* p" U* u
  64. //獲取發佈時間8 `+ y1 G0 L  @0 |
  65. $datetime= date("Y-m-d H:i:s");( Q) Z2 c) O6 u# d, v: g* W
  66. 9 D& [+ W0 B5 n- {1 @8 Y
  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')";
    9 e+ M& @% h% p9 |% @7 V2 P9 p9 R

  68. # f& |. W% H2 l; T$ |; ?, ^
  69. //連接數據庫並處理數據" P# V- J5 i0 ]! C( a* k, ]; W9 A. D
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);2 s& l! E: O$ V
  71. if(!$con){
    7 Z; {" y7 r1 K9 g
  72.         die('Failed to connect to database! '.mysql_error());1 d$ t2 T9 C: t, K! `% P+ k
  73. }else
    6 {& e' {: s' D* [% Z
  74.         echo "Suscess to connect to database!( p1 U* `5 n- i  L% d+ R" g
  75. \n";
    5 _) \9 R0 D) k+ K4 T' f, z

  76. : o& e) D* y  O* }' b9 H
  77. mysql_select_db($dbname,$con);/ q, ?. ?* @( o% p2 Y& w
  78. & R! }  E! F+ E2 D# x; L( F
  79. $result=mysql_query($sql);
    ) w) L# u6 \% p( G# f) ]: Q, `

  80. , o* l% A/ R8 j" q* v# f9 B" n4 d
  81. mysql_close($con);
    0 Y* }' g. S: u
  82. $ I1 g7 F7 ]2 c* x9 i9 ]" o
  83. if(!$result){
    7 D9 @7 v2 L" ~& N* P9 e! S4 w
  84.         echo $result;
    ; }9 r2 w5 H6 [5 {8 r  u
  85.         die('Failed to post article! '.mysql_error());
    - c, l. O+ y4 k7 O5 _
  86. }else" [: [5 u* _% i3 M9 A# I" w2 D
  87.         echo "Suscess to post article!\n";
    0 \) ~0 L+ F& V5 M( F

  88. 1 ~/ P; w% g- N) R2 O
  89. echo $dbname." is done";
    * p/ U* E0 X8 C5 ^, X$ b' }; o
  90. 5 }, Q0 L2 w) |* W' B
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。
; q9 ?8 k/ e8 e4 t/ U2 \" v, c+ }: s, X
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。
" D. X6 e2 ~# O/ K( j9 o+ E! i) z% s) H( t7 r
如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。) I9 @3 v& ^" [5 p+ a
這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
% [1 C  U. V0 l7 I* W. M- Z& o+ T5 v5 `2 D( f4 k

# U7 c6 L; L0 c" P, `6 A; u8 q: p3 j2 a4 X7 H3 |- y1 P
- ~8 w7 T. ~/ n  l  x
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層
  1. 4 Y- i2 L- r7 n1 i# z
  2. <?php
    ! e& ^0 ~, W7 n1 U  t
  3. //數據庫參數( F: Q3 G1 z. u5 l+ H
  4. $$dbuser='';
    + n4 Z) d' i3 ?8 p# ^5 k( M  K
  5. $$dbpwd='';9 ]; K7 A& J4 v/ K# b# L9 ?
  6. $$dbname='';: f: M5 U' {" L* |+ p
  7. $$dbhost='';
    - P( Q9 }# n* I  S
  8. $$dbtable='';# {. s: K& }# _. i* k* ?' I
  9. & a2 U/ ^7 ~0 s) V
  10. //設置讀取路徑5 a% T$ h7 j3 f5 S# m9 v
  11. $$rdcontent='xxxx.txt';
    ; n# j6 s: J3 m
  12. $$rdtitle='xxxxtitle.txt';# z) d% w* d2 \+ O1 }1 W: |
  13. $$rdlink='xxxxlink.txt';" V* v" x- B1 H

  14. 8 v& o2 E0 b  C6 u) X0 a7 F1 w
  15. //讀取插入鏈接,並設置發佈概率+ u5 ?' Q/ F' J% G; K& j
  16. function gen_link($$rdlink){! I* u1 P% ]5 S9 ?$ f3 {, e. z
  17.         $$data2 = file($$rdlink);
    ) H1 y7 r8 o7 u/ B2 V
  18.         $$num2 = count($$data2);
    : C: p- D9 R" ~2 Q& ~
  19.         $$id2= mt_rand(0,$$num2-1);
    , q0 Z3 b' b# h2 {: f
  20.         $$random= mt_rand(0,10);8 ]% [; F6 T3 |( I. N! {+ c
  21.         if($$random<5)0 |2 D0 [! m2 D) z$ ^5 @/ m
  22.                 $$link= trim($$data2[$$id2]);0 v$ u& ~3 Q: r
  23.         else) {8 \" ]3 a1 Y- h1 u( s
  24.                 $$link="";
    ! @0 U: X3 N, X% M/ v
  25.         return $$link;
    4 }+ g7 M4 A6 E/ t
  26. }1 n; w1 Z6 S% s

  27. " {6 e  x. C$ @& k  q
  28. //生成文章
    % d% \' w" r2 M2 i
  29. $$str = "";
    + e+ c' A; b! V6 x
  30. $$title = "";2 w6 x; h1 r9 N4 T8 r, |! X

  31. 0 |! u/ O! O/ ?( ?
  32. $$data2 = file($$rdtitle);6 Y! _" K  z" H$ R, V5 |: f
  33. $$num2 = count($$data2);1 V& B1 j1 L* d3 B. r& i
  34. $$id2 = mt_rand(0,$$num2-1);
      N4 G* K; w. V; U' U/ Y- w1 G' P) F
  35. $$title = $$data2[$$id2];4 V* v! r7 H" o* w- D

  36. : ^0 d7 j0 k) O2 r, y, f- B5 M
  37. $$data = file($$rdcontent);
    3 n' J* Y& |: g6 h/ O
  38. $$num = count($$data);8 M1 t2 u' q) ^+ u
  39. & D  t: s3 w( ?
  40. for($$i=0;$$i<25;$$i++){
    ) f+ J- U9 l/ i. ?+ f
  41.         $$temp=" ";3 Z/ z; [  H' o6 \- O7 P
  42.         if(($$i%5)==0), w. h6 Z( L) w( U) M% @+ A1 g
  43.                 $$temp=") |7 ?  w* r5 Y' `
  44. \n";9 x' a3 A+ C7 Y" W! f
  45.         elseif(($$i==7)|($$i==21)){: x* H+ I6 O- X* ]. V- A: F
  46.                 $$links=gen_link($$rdlink);1 ~, e: K% d1 O) k1 K$ `' Q
  47.                 $$str=$$str." ".$$links." ";# w" p5 x% [4 Z+ E/ l
  48.         }4 f, d; @( Q6 B" s2 v; K
  49.         $$id = mt_rand(0, $$num-1);5 l; M8 ]% u9 E; D- i
  50.         $$line = trim($$data[$$id]);
    , q0 S! S% H: _
  51.         $$str=$$str.$$temp.$$line;
    3 s8 c; O& o4 L% Y& `
  52. }
    , N& ~! R* U4 n+ N/ a

  53. 3 r: [5 ~, z# S& U$ y8 D
  54. //生成slug5 p" a! }" ?% L+ z. z
  55. function generate_slug($$len){
      i, V3 `) c  Z% O% a! o
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    ' Q) w& m( O; W7 X; a( U) K
  57.         $$slug="";
    7 O3 U9 p0 A; f4 u# q
  58.         for($$j=0;$$j<$$len;$$j++){: h* Q2 G8 f. d# D2 W4 H& X( l
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];% a/ y$ F6 ?' k7 Z; @+ Q
  60.         }
    9 S7 ^8 n" v' p9 i# C" |. M
  61.         return $$slug;
      v' [, U" l. A
  62. }
    % P+ B4 `6 ]/ s- e8 r- ^3 W- n5 Q
  63. $$slug = generate_slug(17);- P7 X2 j4 L( Q' ?

  64. 1 a1 ^: ]3 g! c
  65. //獲取發佈時間
    # g5 A) m1 M2 G  {: K# X  z5 j- K
  66. $$datetime= date("Y-m-d H:i:s");
    7 b* b: {2 r: U  P8 E

  67. / s  v( H0 d2 v" V3 K/ f( M! ^9 p
  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')";2 i0 \( z1 e7 V9 H
  69. 8 f8 d6 B- b; W/ w4 x- r0 ~
  70. //連接數據庫並處理數據
    % }$ d% }/ y2 A# @$ f; _" k; h/ X4 o) x
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);
    + w' A% D" D4 y- B
  72. if(!$$con){' Y9 f9 a4 P, }
  73.         die('Failed to connect to database! '.mysql_error());
    . J$ K( L1 Q$ i  s) A- o) Y, [$ u
  74. }else
    $ T# N1 i* C& e& ^
  75.         echo "Suscess to connect to database!) p6 @0 Q- c9 ?9 J9 Y7 \7 z& b: r* e
  76. \n";
    ) N) M; b- {2 k
  77. 7 H6 s( u+ }8 {6 ]3 V3 L
  78. mysql_select_db($$dbname,$$con);3 F7 C9 u& I5 F$ j1 r

  79. ; l; U$ b4 I* M( g: L
  80. $$result=mysql_query($$sql);
      x' w& p% s* b7 S& y

  81. 7 i  b9 p9 y8 V2 Z5 S0 z) a
  82. 0 ~3 o- W) w0 f4 F! c" A
  83. //前面已經插入,獲取插入id8 f, V6 I7 D$ v+ P: j; ^
  84. $$insert_id = mysql_insert_id();* G7 j6 N3 f& h1 U4 \
  85. + s. X2 A( H! U" m6 B
  86. //繼續插入wp_term_relationship表
    0 c! y/ z0 Z0 u. n+ h' e
  87. if($$insert_id > 0 ){8 t7 z  d. n) E7 k
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";8 z; @$ Q+ \; D" W. D  J
  89. 6 o5 ]* d$ P9 ^5 p
  90.         $$result=mysql_query($$sql);
    9 e: b5 V# g* H9 ~) U* y% G
  91. }( s/ \& V/ S; L  Z, y/ _0 L
  92. //關閉數據庫連接
    0 [7 R: P8 m: d' n7 N8 x2 {/ o
  93. mysql_close($$con);
    % b0 u2 W' z  S* b. Q$ U
  94. 0 R3 B3 E, i+ f( F2 E) W+ X

  95. : b2 k& V  X* M. W
  96.   C' F8 p: z* b  t# M
  97. if(!$$result){; X$ {1 C7 C4 N; O9 G1 Q9 @
  98.         echo $$result;1 {- i+ U' _- d/ T( n8 n/ {/ E
  99.         die('Failed to post article! '.mysql_error());# O5 \. x9 `* B) C: \2 t- _
  100. }else$ k; G. E& @/ Q: ^  b) J
  101.         echo "Suscess to post article!\n";3 `: y' O; K6 T

  102. , l% T+ P5 [+ U+ ~( J2 C. q
  103. echo $$dbname." is done";
    2 x$ V4 q8 g" [5 `! W" D
  104. 0 I$ e- R& u9 M9 [. Q# x
  105. ?>
    $ P: z4 k; v: x3 \" q6 Q4 a
  106. : V  P! P9 S$ D$ A% b, l5 l# P
  107. * r' g0 L! z$ v3 E) c2 {5 ~

  108. / x! R% V: q2 X1 \" ~
  109. $ ~) U% r1 ~" `0 P
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob3 x- g* J2 p$ |% L
$ K6 G" x, w5 b) l: i

8 g  u2 _. ~7 s9 c如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢
/ n) z9 S7 a+ V4 m9 o前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢* a- p" h( U: o  H5 C5 Q% N# y

* L8 ~1 ?8 ?7 f; x4 d! O, }

評分

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

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題
& ~  g0 r: W  W# P) k6 J, O
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.
' f0 m' b! f- c. r你可以查看mysql那幾個常用的指令。6 v; S! w: ^4 O# l; `* v

3 I/ A: y+ O( a5 |$ D
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

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

點基

GMT+8, 2026-3-13 06:47

By DZ X3.5

小黑屋

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