过期域名预定抢注

 找回密碼
 免费注册

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

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

, g% N2 _. S# S" J* u% U5 J
+ l' C( v. n$ p1 T- y! c
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID& K! I+ D% C. v6 e
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯 7 U6 `! Q: y; e$ K
mattfox 發表於 2013-12-3 15:42
) D: s; {! Y" S# F; ^在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID

7 ]: G5 c5 i( l5 L是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的7 }. I7 H6 _9 }
2 F( b5 d( r, B8 ?- E, r; Z
# @; Q# E/ l' a  Z" |- \
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
4 z6 R2 S) ^; N4 P6 l
' ^% _2 D9 y2 a; ~& ~8 @4 I$ M你可以把寫好的代碼放上來,我幫你改) W: q2 ]+ {/ ]+ n7 c4 r8 J3 F
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.3 c3 u& b1 T1 n
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多
& X( D6 ^" o. e8 d, o( h' p9 k
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯 6 N, M+ a+ ?  i* w
& x7 x/ `# `' J
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。
) v. S2 U. v9 W( h: B自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    5 x: e: i  ~8 A; c* E8 F
  2. //數據庫參數
    6 C1 F& F1 \5 Y
  3. $dbuser='';- C2 e" p6 W2 ?1 k$ R
  4. $dbpwd='';( c3 t0 o2 M+ u0 A
  5. $dbname='';% Z5 u9 f/ O9 b- O! h" S$ K
  6. $dbhost=';! L( h( u, Z( Z& d4 f& o
  7. $dbtable='';$ J# H% g/ b, o$ ~9 Q
  8. & A) N# F! R2 ]. b' s! {
  9. //設置讀取路徑' @9 M3 E$ i& ?7 v( _4 N# F6 e
  10. $rdcontent='xxxx.txt';
    5 r1 O7 \' k% ~" `8 v. R" Q
  11. $rdtitle='xxxxtitle.txt';& _) T! |$ o! V9 \- ~) g0 H
  12. $rdlink='xxxxlink.txt';3 w1 Z: E8 E, f
  13. : }1 F& l2 p! p
  14. //讀取插入鏈接,並設置發佈概率
    4 N7 u9 D. C& {  s4 R3 q4 B" M; h3 E7 Q
  15. function gen_link($rdlink){& k. V" e* p6 X$ j/ x$ ]) t( ^
  16.         $data2 = file($rdlink);
    : p; Z+ h8 H: s; {6 U  T$ N/ ~
  17.         $num2 = count($data2);# |" v* i0 a2 `" p) c
  18.         $id2= mt_rand(0,$num2-1);
    ( A# x" ~( F* v$ r/ @  Z, D
  19.         $random= mt_rand(0,10);& E, E0 n. {- _
  20.         if($random<5)* n. g' R2 ~5 p' Y
  21.                 $link= trim($data2[$id2]);7 q4 b8 Q/ u3 v
  22.         else
    ! Z/ V0 S$ f# o0 R0 p
  23.                 $link="";
    $ F) Y: r4 k3 b8 y" N5 t
  24.         return $link;
    $ N$ d- l5 l  f; D
  25. }
    6 ]$ ~. U! p% H' i
  26. * k9 x+ I& S7 f$ M$ n4 H" i9 u
  27. //生成文章' |* M  [' t- G# l! z. z
  28. $str = "";
    1 s8 j5 T/ g; T0 X
  29. $title = "";  z8 f; E5 d2 P" j; f: ?4 C

  30. 5 q$ H8 e2 h6 e' u0 y
  31. $data2 = file($rdtitle);
    % \/ [5 }, E! F: y  k. x
  32. $num2 = count($data2);
    ; E5 Y, i! t+ ~9 q! v4 ^+ u
  33. $id2 = mt_rand(0,$num2-1);
    5 V! x5 a$ _! z0 x1 B! X8 A" A
  34. $title = $data2[$id2];' f+ i$ ~0 {$ ~& y  V- s; R. q% C
  35. * Q3 [) T$ R# u% j
  36. $data = file($rdcontent);
    % z$ u% B8 d% H, @+ \, @
  37. $num = count($data);
      r! P/ g% H0 e/ W

  38. ) L, i! z' c6 q9 `
  39. for($i=0;$i<25;$i++){2 W3 M3 R8 l. f- U
  40.         $temp=" ";
    * ?" [* g0 x4 H. H0 ~( L/ t
  41.         if(($i%5)==0)# x( V) `3 Q1 ^) D3 D
  42.                 $temp="- z& c' W) T2 Q1 h* Q9 m0 w7 u
  43. \n";
      u& P5 q5 j* f% x! V; C! w6 B
  44.         elseif(($i==7)|($i==21)){+ P2 l" x% P* w# [3 v) `( R
  45.                 $links=gen_link($rdlink);! j( ]4 _/ \/ B2 I
  46.                 $str=$str." ".$links." ";
    ; |. u: D/ |% I5 V! c5 u1 z
  47.         }  v6 ]+ e: W0 T3 B! @! Y
  48.         $id = mt_rand(0, $num-1);8 I% @  {5 k, j4 H) F# m! u
  49.         $line = trim($data[$id]);; r; i8 R+ C0 J* e+ x3 F
  50.         $str=$str.$temp.$line;
    : x+ ~) `  m& _' O' e6 Q* L; z" x
  51. }
    * u9 A" S; U/ Q, V. m4 a; p9 p

  52. - C2 ~3 B4 O& d2 c  \. x+ g/ K" m$ b
  53. //生成slug
    : G6 d. k$ C% v( J. f9 y$ E# q
  54. function generate_slug($len){: D$ D; ^% W2 T8 l& R) f
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';8 L/ e4 T  }3 a8 J. ^
  56.         $slug="";
    ' T" @3 s' B( ~; _2 k5 @0 @8 q
  57.         for($j=0;$j<$len;$j++){
    . k# {- K9 o2 G7 S8 k0 g  Q- f7 }! [; @
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    6 E. i5 \; ~4 ~: M; o) _* d1 e
  59.         }: _) J9 X2 f, g
  60.         return $slug;
    # H  i1 b: k- w. C
  61. }7 V: T  n! h% B0 N
  62. $slug = generate_slug(17);' c8 V0 X, [4 ?. l0 {% m& m

  63.   Q' b* B* R' E; W* o4 j
  64. //獲取發佈時間
    0 x% U% w1 L4 d% n+ H( u
  65. $datetime= date("Y-m-d H:i:s");
    : g! `/ H3 U$ U4 O. w
  66. 1 _  P4 ^5 P+ P2 N6 f0 b( ~. ?2 J
  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')";: M7 G7 Y: N4 W8 b5 @5 Q# D" R

  68. 5 M; D1 }2 f2 [  {  \5 u
  69. //連接數據庫並處理數據
    " p& C: y$ W8 U0 ?% U$ j
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);8 J/ H, @; \, `8 ^
  71. if(!$con){5 f. T3 b( L6 j/ {/ O
  72.         die('Failed to connect to database! '.mysql_error());* M+ t8 a! ^' x# N# @) Y' p! V* M% h
  73. }else5 V8 i% w5 P  e& {9 F3 @
  74.         echo "Suscess to connect to database!
    " V, T- J- S# |4 D3 ~3 v) U& m
  75. \n";
    & ^3 @! e- `& H' r' P: Q* F

  76. : X9 J  k0 b# G5 j: ^8 n% N
  77. mysql_select_db($dbname,$con);
    ) R/ [7 Y  U" x1 d5 x. |

  78. % V2 s# r2 y! M8 j# M
  79. $result=mysql_query($sql);$ Z9 ^+ }; B4 D" h, x& }

  80. 3 W" y- p; h8 j1 V
  81. mysql_close($con);" T+ @! l& s  R# k
  82. 5 c6 z! m. s! N+ Q2 l" R
  83. if(!$result){
    & X5 {9 h/ A# |! z
  84.         echo $result;
    ( X+ }; C2 T$ E4 `1 [. j
  85.         die('Failed to post article! '.mysql_error());
    + w$ }2 W+ }3 e: Y" m% V. s
  86. }else* y1 {$ n/ W/ N* |5 W
  87.         echo "Suscess to post article!\n";
    & C5 O# g( y; z1 G9 s* q) P

  88. ) R  `  ~8 U+ n5 r; `! d
  89. echo $dbname." is done";
    , s# f* F5 ^: a# P: w6 C) A, v

  90. 4 `4 C8 {' F  @+ o( H: @$ t$ e; i
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。
0 u7 \% b( N+ A7 l- P' y$ |4 A. Y- e, _  o
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。, P4 K# @# Y' j$ D9 I
4 n5 e9 V. h' C4 \. L; h
如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。
. _# x& P& _0 }這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
0 }. `8 H' k+ J5 r8 |! W
7 S: G5 L' y5 ~; p$ e; S
6 o) Y- |* ]$ G# m
2 Q0 [/ P/ T. ~8 S
+ r+ x, b8 k/ F% `, [  y
回復 给力 爆菊

使用道具 舉報

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

  1. 7 N. G* F+ o8 g* I
  2. <?php
    & D- p; J6 n  a) y
  3. //數據庫參數
    $ Y8 `9 Q8 M2 b1 s& g
  4. $$dbuser='';# l; L* e7 l$ b& b; G9 Y# {
  5. $$dbpwd='';" i/ v# ^0 n% [$ E, D2 D. y" i
  6. $$dbname='';
    " Z8 r( V' L% ~1 M7 B
  7. $$dbhost='';' A7 r, r3 R. q
  8. $$dbtable='';
    $ ^  Q( m# b8 C

  9. 2 c- [2 s! V# i: |3 ]
  10. //設置讀取路徑
    2 E3 Q0 u' m& B  E4 o# C
  11. $$rdcontent='xxxx.txt';
    9 c  ~5 |( P$ ~4 y8 B# d# S/ e
  12. $$rdtitle='xxxxtitle.txt';* x* G) P* U1 X- H
  13. $$rdlink='xxxxlink.txt';( k6 ?  _6 o: k
  14. 0 ?# o. S7 ~% g! Q
  15. //讀取插入鏈接,並設置發佈概率/ E+ J+ J4 I4 b" Q
  16. function gen_link($$rdlink){- Q; s! z6 W1 n" w/ t3 n
  17.         $$data2 = file($$rdlink);& @  S* |2 o& d% Z+ k) C% z$ m
  18.         $$num2 = count($$data2);5 S" }) @" _4 y0 O6 j/ n) H
  19.         $$id2= mt_rand(0,$$num2-1);
    2 m$ E, k) V: f+ k+ e
  20.         $$random= mt_rand(0,10);. g! ?* ~; i% N( j% S, f8 V
  21.         if($$random<5)
    ! @1 |. i- W- M: G  z# ]/ I
  22.                 $$link= trim($$data2[$$id2]);
    6 m+ P1 S% A8 r6 z: S0 Q8 L
  23.         else5 m& i. L' ]( j0 o3 H! a, J. f
  24.                 $$link="";( B6 z6 ~& ?/ p1 r
  25.         return $$link;4 i6 @" j) b4 R4 p8 }( X, S* {' T6 N2 \
  26. }
    : G1 f" T9 e/ G7 G: M) L  ?

  27. # V; n( f* v; L; N+ [( P$ H
  28. //生成文章
    " _* M' M$ N( L3 D( e# x4 G+ ~
  29. $$str = "";
    . t0 t  s. r( j# K( Y" h
  30. $$title = "";
    + d! P3 I( I/ s1 k# Q
  31. 4 @, a8 U& K' x3 w9 i
  32. $$data2 = file($$rdtitle);
    % s! ^+ l9 s1 I( z5 L
  33. $$num2 = count($$data2);
    3 I# n" C' h" F& B
  34. $$id2 = mt_rand(0,$$num2-1);
    / U: |' G0 t: w8 @/ B- f* B
  35. $$title = $$data2[$$id2];
    , a% r. Q2 J9 g6 e2 E) x) }
  36. ) e$ j# f2 v( i. ?3 u
  37. $$data = file($$rdcontent);
    1 X: X6 d, R. ^3 W5 S* O. O) ?
  38. $$num = count($$data);) e8 G' h1 m; h+ s
  39. , h9 {5 k  X% w: m
  40. for($$i=0;$$i<25;$$i++){
    ! _. r. f9 f4 e6 F6 A$ g
  41.         $$temp=" ";; W* Q5 m. p' S, i# ^
  42.         if(($$i%5)==0)
    ; ]+ W8 l6 t  ^. s- [5 ?) \, V0 Q
  43.                 $$temp="2 B2 P( }4 e+ u
  44. \n";
    4 |0 k" F+ m7 A% W9 F
  45.         elseif(($$i==7)|($$i==21)){1 y4 l+ S% A- p" b% ^
  46.                 $$links=gen_link($$rdlink);1 a0 t% b. v( h( Z3 V
  47.                 $$str=$$str." ".$$links." ";2 {) i2 V9 w' O$ J1 _/ t, d: Z
  48.         }
    # i$ m1 ^: ~" i! {* d
  49.         $$id = mt_rand(0, $$num-1);
    $ a1 B) a& X* |1 A
  50.         $$line = trim($$data[$$id]);* O) ?' E3 E3 E
  51.         $$str=$$str.$$temp.$$line;& Q/ w3 D* ]+ n* {6 }$ y
  52. }
      t, V3 r4 o7 V+ v) v8 T

  53. 4 [: {$ t7 g: Z# S- t& A6 \3 j
  54. //生成slug- a7 w7 H$ Q; [5 ?0 f& `/ j( @9 W
  55. function generate_slug($$len){
    6 A) ~* G+ T" ]: F, U7 [) [
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';  Q  M' D7 B, L- `
  57.         $$slug="";
    ! e& l; d( l% E$ u' x
  58.         for($$j=0;$$j<$$len;$$j++){
    . f. E& n# e7 O/ W1 G/ A
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];  T% W* F& K. W9 X* S
  60.         }
    3 p% @! \) `! F  G6 R9 [
  61.         return $$slug;/ F1 h7 O  Q/ P. m2 c* h1 }; v# y* I
  62. }' m1 Q! o) q5 ~: E7 _
  63. $$slug = generate_slug(17);' Z9 A, c  x* L: T
  64. # w" V1 H6 q, L( `( v' F  b7 m# L
  65. //獲取發佈時間7 A; R' w2 Z6 b( W
  66. $$datetime= date("Y-m-d H:i:s");
    , O( R, `# {! p  {
  67. . C& S9 c) l9 |' p. K- D2 Y
  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')";5 p  r& C3 G- d5 k9 p
  69. $ T5 t" G1 D8 s# Y
  70. //連接數據庫並處理數據
    / n+ s# ~9 \+ L5 P6 S
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);
    / w& P/ Q3 G0 @0 o* P
  72. if(!$$con){
    ! t1 n8 s, S7 b2 m. \! `6 e
  73.         die('Failed to connect to database! '.mysql_error());1 Z- A2 {* {8 q! c  v: H, b- i
  74. }else' g0 i+ h& a3 e/ b7 v
  75.         echo "Suscess to connect to database!
    % u: f; ]; d/ I9 l2 G/ Q! o
  76. \n";
    ) ?& v- h" j3 F$ z- m  b
  77. ' q; P! C; R- s# u8 ]
  78. mysql_select_db($$dbname,$$con);
    : C6 s  K% ?$ ]" k  |5 f! G
  79. 7 P9 Q2 S) H  W* R5 F, s
  80. $$result=mysql_query($$sql);
    5 z3 G- q2 l* ]5 T  n- H' K

  81. % i, r* `2 o( r8 \8 _* ~4 z: q
  82. ; N3 i8 ^4 Z- t/ n& \# |; j  g
  83. //前面已經插入,獲取插入id
      X! Q/ _: m4 H  C0 W2 b! i
  84. $$insert_id = mysql_insert_id();
    * a  V+ g7 h; O# Y/ C  N, v
  85. ( q7 D: }8 ]* w4 z2 P9 Q
  86. //繼續插入wp_term_relationship表
    9 Y0 T8 ^2 O0 y; o' x' l) M
  87. if($$insert_id > 0 ){
    5 }* }2 b6 f: `+ s: t
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";
    6 Z. K- D9 k$ T" b/ W

  89. 5 j. n& A- i7 ^& s
  90.         $$result=mysql_query($$sql);  ^+ p7 [7 v8 K  I4 \7 ?
  91. }- ^: B, [" j- X9 R
  92. //關閉數據庫連接
    # c4 ?2 A' G6 T3 E8 E4 c
  93. mysql_close($$con);% u" [: S6 q1 d6 B; q4 A  I+ X

  94. / Z  Q7 V% o! t: @3 o$ d2 d* I8 |, V
  95. # E+ F: ]0 k1 O7 \9 _+ t
  96. 4 J5 h" H+ Z# u
  97. if(!$$result){
    , h; T* P# s! E$ e$ _8 H
  98.         echo $$result;$ J5 t/ m) c- E6 p# D' L* p: A
  99.         die('Failed to post article! '.mysql_error());: x3 H$ C9 U  t3 x) b( Y
  100. }else
    2 T% W$ R* W! O1 K: [/ {! U
  101.         echo "Suscess to post article!\n";
    . R; j& @, d5 |6 y
  102. 6 j" e9 e. I) }! r) d
  103. echo $$dbname." is done";$ m! ^6 T& g6 p+ l2 i
  104. - l+ y: {% I2 C3 s( K5 ?, G
  105. ?>7 J% P" Z, J( Q0 q
  106. 7 t9 Z' F1 q4 x5 |2 D- a

  107. + B: s3 _% D% d5 D0 o, S) I
  108. ! \! v0 I+ d' Q5 H$ ^4 D  x
  109. ; M3 _, i6 H' j  e; ?* K) U
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob' G2 h9 j/ ]6 B5 x5 ]6 ?& r! Z

& D# R: s0 N; n! s3 j1 {' d
: F! I+ [6 l* p6 [' C2 I$ Z# f- c* B, q如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢
  a9 I3 j2 _* F: Z: v前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢$ D$ m, ]3 ]1 z  I$ S$ z* ^6 g

4 [. a' V7 E& j

評分

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

查看全部評分

回復 给力 爆菊

使用道具 舉報

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

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.% U1 u- N4 d3 T- ~
你可以查看mysql那幾個常用的指令。
  ^# r' s8 E6 p% |5 l' U4 Y0 m' Q; S4 g# I/ _' x) `
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

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

點基

GMT+8, 2025-11-19 12:37

By DZ X3.5

小黑屋

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