过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。
' t5 Q1 I  Y7 ]; M
  q! M' \& t3 _5 R/ P! o, |# l; u5 F" p+ Y# h; k
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID0 @) _$ d# _3 Y  q) l
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
# u6 }" M! o  n) y3 V
mattfox 發表於 2013-12-3 15:42
! l( d% c! H. l9 w! j9 N在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
+ e* ?* k# i5 G. z& S( M
是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的- A  y+ ~+ d: x5 W7 a

$ r. U9 S5 s) T3 i% R
- ]. X3 M) V. S8 P) l
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧! F9 |" G# [, l8 k; e

% r* u% j% t+ ?  `* t$ [. p1 S你可以把寫好的代碼放上來,我幫你改
2 S/ S! D3 U/ Y9 z
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.# x! E8 M% _' s* m6 Q  G7 m
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多1 k" S5 B, T" s3 w: w
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯 : C7 T5 o6 P* t
$ K6 G2 c) p) K  M
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。
6 T4 c3 E5 m4 D: ?' l2 S. f自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    9 C5 j4 O9 ^, n2 H7 D
  2. //數據庫參數
    9 H4 W4 P! k2 l/ w3 t- z) t
  3. $dbuser='';
    ! k: ]  T: j" C( Q7 e+ ~9 z* u
  4. $dbpwd='';
    / f3 B+ L; i. o, L/ V5 |
  5. $dbname='';
    " M) v( F" u* L# v2 w  r2 n
  6. $dbhost=';
    # p" s' ]! ~9 ^7 C. T8 g
  7. $dbtable='';
    ( B* ?+ ]1 O  r8 v0 }! K" t1 ?, a8 m
  8. ( E% g$ F, X2 Q  k
  9. //設置讀取路徑( P& Y) d- v1 L% H5 x5 G
  10. $rdcontent='xxxx.txt';
    8 |' D! K. l& i) T7 u) b+ L
  11. $rdtitle='xxxxtitle.txt';9 D* w% E9 M/ T
  12. $rdlink='xxxxlink.txt';8 S) T5 k4 Q3 j
  13. : `" T0 e+ r* W" }7 J* [2 d3 X
  14. //讀取插入鏈接,並設置發佈概率
    5 H1 \7 @, z9 ]
  15. function gen_link($rdlink){
    . B" k. }6 j: d2 Z( P' d, T
  16.         $data2 = file($rdlink);
    ( c2 V  e% u7 C" Q
  17.         $num2 = count($data2);! k, g) J1 a: T! m+ Z. j
  18.         $id2= mt_rand(0,$num2-1);/ x! S0 S9 C  N1 |, E8 D3 z# Q# [
  19.         $random= mt_rand(0,10);
    , t" a- K% X) Z9 D( w. E/ Q
  20.         if($random<5)
    0 r/ X: i+ Z* u3 {7 K
  21.                 $link= trim($data2[$id2]);% s! _2 @. d0 P/ g9 g
  22.         else1 a; x/ y, ~  k) r& A; Z/ b
  23.                 $link="";
    $ ]# `2 r' u1 {+ L
  24.         return $link;
    6 h2 h" _# B( T+ S: p
  25. }
    ! P, U' Z! n% c  K9 ~. A

  26. # ?! P( i- j7 e; ^5 o
  27. //生成文章
    , T3 c9 |2 _# q8 [- i
  28. $str = "";
    - |, l6 ]3 }2 K8 ?9 W
  29. $title = "";
    ( r; O# d( a! s% j5 H

  30. 4 q8 O* H; M9 \* P! T7 }4 `
  31. $data2 = file($rdtitle);  ~* P6 `: i- ~9 h
  32. $num2 = count($data2);5 A6 O4 A0 Q& l0 V
  33. $id2 = mt_rand(0,$num2-1);  Z0 w: ^3 }( n' e& E
  34. $title = $data2[$id2];
    8 Y5 X2 |+ R" ^. X+ u9 Q1 V
  35. - ?" w% z3 Q* T7 A, T
  36. $data = file($rdcontent);
      V: U  A) o% i2 g" s
  37. $num = count($data);
    + N" |* @& y0 j+ W6 C5 d0 d& ]

  38. 4 C3 ^5 a, q) V$ X  n, ?  t9 {2 u
  39. for($i=0;$i<25;$i++){. K  D1 U6 M: c% r% V
  40.         $temp=" ";+ A2 l4 Q$ H4 ]" w5 [
  41.         if(($i%5)==0)
    2 n  {7 V7 T, j& C' @) A! P# Q1 I
  42.                 $temp="8 ]! s8 ]: F, k8 c' \* ^
  43. \n";4 v1 m* b0 ]) ]8 i
  44.         elseif(($i==7)|($i==21)){& V9 ~* ?, Z6 k3 k& g
  45.                 $links=gen_link($rdlink);9 ]6 \/ G4 d# |6 ~6 M; H
  46.                 $str=$str." ".$links." ";. `( l- n: u" [! d! |
  47.         }
    , y9 `/ B; ?3 t& H6 V
  48.         $id = mt_rand(0, $num-1);
    0 b- [, h. u$ a' ~
  49.         $line = trim($data[$id]);
    4 \7 V5 Q, {2 @1 h7 X
  50.         $str=$str.$temp.$line;
    ) S3 z6 C/ v: [6 F1 h# }
  51. }/ `0 e( p" p0 G( T  K" d

  52. - K' n7 R; V2 ?8 A( K
  53. //生成slug
    % q) R, \& ], j7 a$ I
  54. function generate_slug($len){
    8 N9 A2 a- |# e3 }, A& Q
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    3 _1 `  z1 C) T
  56.         $slug="";
    - q2 @3 C; A0 Y( ^; |* [  j
  57.         for($j=0;$j<$len;$j++){
    1 o3 M0 s9 [& b8 g/ S
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    ! H" X; M0 X" J& ]9 ?2 W* r/ A$ }
  59.         }( x" f+ A9 c+ i+ T
  60.         return $slug;  ?2 U- m; f# K/ d! _* T# G1 k
  61. }8 j8 y% P2 t9 Q; j
  62. $slug = generate_slug(17);; g7 z7 h3 ?- _7 H5 Y3 i: _" v
  63. 2 D# R; Y% m' o7 Q/ ?8 g# m
  64. //獲取發佈時間
    . _  \' H( P/ L+ z+ y1 f
  65. $datetime= date("Y-m-d H:i:s");6 g1 c& A( G8 b

  66. 6 P* C6 `& R' v5 A$ T
  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')";' q, y7 `* R' n) C/ v' \5 \. A  \

  68. $ V, r- w4 q, C3 ^: m+ q
  69. //連接數據庫並處理數據. D! n  y0 ]& t* m
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);' w1 h1 c. s! T, V
  71. if(!$con){% ?' J( I& _2 a
  72.         die('Failed to connect to database! '.mysql_error());
    : v" ]8 j! w4 p* u4 h" x
  73. }else
    4 u3 d7 s. ]% x5 K4 U/ m1 K
  74.         echo "Suscess to connect to database!
    . p! b$ }+ E, c. q& I
  75. \n";
    & N7 H) O$ a. o! R6 S
  76. 3 i5 D6 E4 w& t5 N5 _: S4 P8 r
  77. mysql_select_db($dbname,$con);
    ' O  x, f/ U& r1 c/ N; k* V4 f, Y! I
  78. " I% n$ h5 M( ?! y8 r. d
  79. $result=mysql_query($sql);  T0 t+ ~5 R" {
  80. ! e5 r, D1 ^, J0 ^( d
  81. mysql_close($con);% s5 r& F5 @: i2 ~- f
  82. 4 Z; A9 G; ^7 x. C/ t3 \
  83. if(!$result){, p1 ]' Y( Z7 ]2 Y+ i
  84.         echo $result;; W5 ?# C( @- W0 d- U* K1 p6 q
  85.         die('Failed to post article! '.mysql_error());9 @+ K9 B% C! L
  86. }else
    + ]4 q' {( Z; N: G3 F
  87.         echo "Suscess to post article!\n";
    3 k! R" u- H) w% `1 D! s: r
  88. 6 g" D2 R% z2 `. A& _& |5 q
  89. echo $dbname." is done";
    ; g) U* h0 ]2 J0 [/ ]

  90. & }& n. N5 d& o  f$ s% k5 b: [! e  Y9 X
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。
! ]8 d; t: O8 _5 T% T( k( `$ ~# N3 K- I0 b4 P- c" F! e1 {
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。
$ Y" Y5 R* G8 s8 X' Y$ h0 O
3 R( A. O$ u+ F: F- j& z如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。
% O9 f- L# |* C3 H* N- d2 b1 ~- @這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
; k( n; K3 ], d. E0 Q4 P8 c4 G( W% i

: _  E! V1 x! G6 D+ |
. j9 o( P6 M. r" v) o, }4 c+ k8 @% P. r( X
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層
  1. ' e! g/ @) D  B
  2. <?php
    - M4 M$ M8 |  }! ~0 {' r
  3. //數據庫參數, H" m' D0 p2 p/ b' y6 K; S6 o
  4. $$dbuser='';
    ( u1 i" i0 K2 x5 I0 O
  5. $$dbpwd='';+ r" H+ g3 h* p: n
  6. $$dbname='';4 n& K5 x; h. W( {7 h/ f: X3 A- Z
  7. $$dbhost='';4 m# E/ A( B& b0 ^0 H: {  ?& n" C
  8. $$dbtable='';9 _2 k4 z! `* s, k* L

  9. 2 I; `5 A7 A8 m% T
  10. //設置讀取路徑
    1 x9 F6 V$ k( K$ m8 @
  11. $$rdcontent='xxxx.txt';' [+ p4 M3 D: Y# m8 k! G+ V
  12. $$rdtitle='xxxxtitle.txt';
    4 f- K$ c1 T* c0 Z: o& K8 {) r
  13. $$rdlink='xxxxlink.txt';, \! U4 t6 K/ d3 S& T
  14. 3 x6 T) N9 E0 |6 i6 b9 \
  15. //讀取插入鏈接,並設置發佈概率+ _3 c6 v. f  q' n" i
  16. function gen_link($$rdlink){; b# O% @- s% Q; i$ w( ?
  17.         $$data2 = file($$rdlink);( X( g2 F# Y  \: k
  18.         $$num2 = count($$data2);+ `- s6 S% r( i* g% n1 q
  19.         $$id2= mt_rand(0,$$num2-1);
    . D4 m  ?9 N# C# s0 x1 G  q" a4 ?" A, Z
  20.         $$random= mt_rand(0,10);
    4 j5 T9 j% n, p* g$ A( D& s/ d
  21.         if($$random<5); u/ |, T+ @9 ^! a
  22.                 $$link= trim($$data2[$$id2]);
    ) k: U- P) C8 @/ T
  23.         else/ J4 m4 C( P) |' P; k4 G9 C, u
  24.                 $$link="";/ B) _: k' ?' A# R- w" K
  25.         return $$link;0 H6 |0 T7 z+ I: ~# z6 f) u! p
  26. }6 |. }9 D1 Q1 G! C: ]. _

  27. & j+ _4 J/ X0 k- [. H8 V
  28. //生成文章
    - z6 T. A' T6 z6 F6 M* u
  29. $$str = "";
    " L6 W8 l9 H- ^5 _4 `
  30. $$title = "";
    4 d$ n6 S5 W" Z5 x$ `
  31. : g% G3 K" H" i7 I! ~1 [
  32. $$data2 = file($$rdtitle);
    2 Z7 b  n5 E- ]$ F# P
  33. $$num2 = count($$data2);
    7 e/ C; k! ?) r/ D6 q0 [3 h0 O( d
  34. $$id2 = mt_rand(0,$$num2-1);
    8 j! Y( r9 V2 _2 @2 G4 f* g& k
  35. $$title = $$data2[$$id2];
    3 N: L4 l/ F2 x9 M+ t; l' g7 E3 X

  36. 3 K  D% G$ |# j, _$ U/ V
  37. $$data = file($$rdcontent);
    % x8 B, h# Z9 k4 R6 Z) v# ^
  38. $$num = count($$data);
    ! }8 J4 |4 C7 z5 G/ K2 ?. \
  39. 7 B+ Y; R' b4 D, J2 |  G$ u$ c
  40. for($$i=0;$$i<25;$$i++){8 i- M# }, C% F5 u1 u; j
  41.         $$temp=" ";# ^: d3 T1 {0 ~7 a
  42.         if(($$i%5)==0)
    4 {- [7 ^) E% n7 h0 {3 F+ O
  43.                 $$temp="
    $ a* C8 K! `. Z% k
  44. \n";4 ]) {" j5 y3 x5 b$ G$ @% G4 N0 n
  45.         elseif(($$i==7)|($$i==21)){
      g2 m% }2 Z  J& B6 y
  46.                 $$links=gen_link($$rdlink);. |! a5 z; ~0 t, ?1 n/ Y2 E+ y! a
  47.                 $$str=$$str." ".$$links." ";
    $ I8 Q$ o& E8 w4 s
  48.         }
    * N8 `+ W2 e) L
  49.         $$id = mt_rand(0, $$num-1);% b; W/ ^9 h) _: T1 d
  50.         $$line = trim($$data[$$id]);4 M% [) O& I/ \
  51.         $$str=$$str.$$temp.$$line;/ O# J6 S6 `7 m; \, ~# k
  52. }
    + i. Z  h( `& V' _
  53. % X2 w8 k% D! |, K: F2 [0 O
  54. //生成slug
    / v1 S+ V, J' B- d% U+ X
  55. function generate_slug($$len){
    ) n0 o( l, ?" |- c1 R
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    " C* [% F3 F  n, p
  57.         $$slug="";# x  G1 c+ ~/ S; }$ G
  58.         for($$j=0;$$j<$$len;$$j++){0 t6 a9 ~0 I/ s
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];, q( Y& g7 j+ ~4 m9 Z
  60.         }& i$ U( C3 V; i/ ?* M8 \
  61.         return $$slug;
    7 y, ]/ f, F' V. E' [: O4 x0 q: b% a
  62. }
    ( E* |% K2 O; d1 Q! L
  63. $$slug = generate_slug(17);) a" c+ U1 O# F. I" [
  64. , R" Y$ O; i* f) k: w& \9 ~
  65. //獲取發佈時間
    : f% @7 A9 \4 ?
  66. $$datetime= date("Y-m-d H:i:s");8 u# o; l% @4 e2 q* v' y
  67. % g! }; \8 S1 z& E& k
  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')";
    . z- ]. A" V( e3 \# ~6 `
  69. ' S$ L! Z2 T  x& O
  70. //連接數據庫並處理數據
    $ K. j$ u% m; S
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);
    / h; v1 f9 }$ e  e6 {8 C7 p
  72. if(!$$con){* E& S6 C- m  E7 Z
  73.         die('Failed to connect to database! '.mysql_error());' M& h' X  q1 J7 X3 ^$ F3 A; M
  74. }else
    6 l" t4 l# Y( @& m
  75.         echo "Suscess to connect to database!9 M, p3 v# P2 w+ B
  76. \n";
    1 k9 w6 p; H; s8 f8 I& U2 _- X
  77. + e7 x/ V3 `$ R9 W+ x
  78. mysql_select_db($$dbname,$$con);
    ( F: N1 p* B6 E

  79. " I" f# Y8 h3 T/ A6 Z
  80. $$result=mysql_query($$sql);
    , y$ r1 S( u4 d" f, c+ X) x

  81. 0 A3 d5 f. y- j3 e6 g
  82. " Z. \* W$ e! p3 t% O* Q+ ^0 V
  83. //前面已經插入,獲取插入id
    & U( E$ f3 r* K1 U# T
  84. $$insert_id = mysql_insert_id();0 _; I6 Q' u$ s1 H! _4 H9 ]/ K
  85. 7 o1 s6 H5 {) m6 |5 n
  86. //繼續插入wp_term_relationship表2 X/ D4 w: H- [; Y9 {4 C' e
  87. if($$insert_id > 0 ){
    $ y$ z6 H+ n6 V" \
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";3 I. B9 X9 p" a' ?. A! I# j

  89. ' Q& s; v, e( z: T
  90.         $$result=mysql_query($$sql);
    ; h5 G" C# x/ Z9 E4 v+ ?  Z1 X
  91. }
    0 J8 P! G/ ]( ~) B& c( [+ }) c2 N
  92. //關閉數據庫連接5 \% q0 |. t$ }6 _/ x
  93. mysql_close($$con);, k- M; P# [- z" f1 K
  94. 8 q9 c8 |2 ?+ W. M' M0 J

  95. + Y3 F, l1 f6 }) ^
  96. . N( t, z1 }8 C+ r
  97. if(!$$result){
    9 E! N3 P8 N3 w) P; @# B
  98.         echo $$result;
    . W) f4 K* _/ g
  99.         die('Failed to post article! '.mysql_error());+ m! }# {1 j  X0 G( j
  100. }else4 L8 g8 Y9 O% V0 z6 F6 h
  101.         echo "Suscess to post article!\n";
    ! V  p8 J; i$ L/ W3 u. M

  102. & A0 ~8 S- }  X. r# o! ?7 T6 R, c" O% c
  103. echo $$dbname." is done";  W1 {( T9 r& d& G) _: e

  104. 0 }9 L8 }: p" K  o+ d1 q
  105. ?>
    ! y* w4 v2 W7 f& J3 y
  106. 8 E9 C6 Q& z  {9 _& I0 C: c, g

  107. $ |/ `% d0 B& g6 y* c$ z/ E

  108. 5 M7 x$ L; |' s
  109.   k$ b8 ~* C# f) V+ P; d
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob
- j' R8 M9 [3 c& A5 I  e" @3 t  @+ R7 x- M4 ^! o7 ?' A

4 R6 r! W/ p, Z# b* Y' W* s如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢
: @" }6 I- a7 V& i前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢
) f# `7 D" M4 L  }4 `4 a- O
" j) G" R: S8 g4 r

評分

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

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題
8 @* r" B+ p: _# i* u
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄./ q# ~+ B* u6 W' P1 L) R3 A- s
你可以查看mysql那幾個常用的指令。
2 y, x3 O: P$ I- ~7 }) v3 V( M& C7 S1 \% P5 L
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

點基跨境 數位編輯創業論壇

GMT+8, 2025-7-9 17:06

By DZ X3.5

小黑屋

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