2014-01-17 87 views
0

我有這個腳本,從Facebook圖表拉動facebook喜歡並將它們用作帖子的元值。它的工作原理。問題是它只更新了5個最新帖子的元值,我無法弄清楚爲什麼。

我做了什麼:我試圖安裝一個全新的Wordpress安裝腳本,沒有插件,默認二十二個主題,本地主機,但問題依然存在。腳本只能用於最新帖子

完整的腳本在這裏:http://pastebin.com/f6LqgqQS
網站網址:http://wisefiction.com/recent
(可能加載緩慢,劇本上的init現在運行的,而不是wp_cron用於調試的目的。如果你喜歡/不象職位並重新加載頁面你。就會發現fb_likes_count只有前五名職位的變動)

 $args=array(
      'post_type' => 'post', 
      'post_mime_type' => '', 
      'post_status'  => 'publish' 
    ); 
    $posts_array = get_posts($args); 

    foreach($posts_array as $post): 

      $permalink = get_permalink($post->ID); 

    $idpost = $post->ID; 

    $data = file_get_contents('http://graph.facebook.com/?id='.$permalink); 

    $json = $data; 

    $obj = json_decode($json); 

    $like_no = $obj->{'shares'}; 

    $meta_values = get_post_meta($idpost, 'fb_likes_count', true); 

    if($like_no == null){$like_no = 0;} 

    update_post_meta($idpost, 'fb_likes_count', $like_no, false); 

回答

0

嘗試使用posts_per_page參數在get_posts參數。將其設置爲-1以檢索所有帖子。請參閱the Codex

+0

我現在試過了,它似乎部分工作。在60個職位中,有40個現在受到影響。當我批量發佈在本地主機,我得到了「file_get_contents():未能打開流:HTTP請求失敗!HTTP/1.0 403」錯誤。但是5分鐘後,一切都恢復正常,**全部**帖子都被處理了。但是再次,我只能在本地主機請求一個圖形url。但是,假設並非所有帖子都受到影響的原因是否是正確的,因爲file_ get_contents被太多帖子超載了? – Ming

+0

不太確定。但如果它是間歇性的,我猜想Facebook會限制你可以提出的請求數量。似乎比'file_get_contents'更有可能無法工作你的機器。 403意味着它被遠程服務器禁止。 – Hobo

+0

是的,我現在再次檢查,現在幾乎所有的帖子都受到影響,雖然不是全部,但似乎有所不同。我會將這個答案標記爲已接受的答案,因爲它解決了最初的問題。我會嘗試找到一種方法來一次運行一個帖子的腳本,並且只有當有人點擊類似按鈕時。這會限制請求。或者我可以嘗試捲曲,這會限制請求嗎? – Ming