wordpress显示基于Facebook评论的热门帖子

时间:2012-01-19 01:03:46

标签: wordpress facebook-graph-api facebook-comments

所以我想到的是根据他们有多少Facebook评论显示最热门帖子的列表。我已经设法创建一个基于facebook图表计算一个帖子有多少评论的函数,但我遇到了查询问题:

function fb_comment_count() {
global $post;
$url = get_permalink($post->ID);

$filecontent = file_get_contents('http://graph.facebook.com/?ids=' . $url);
$json = json_decode($filecontent);
$count = $json->$url->comments;
if ($count == 0 || !isset($count)) {
    $count = 0;
} ?>

<?php if ($count == 0) { ?>
         <span>No comment</span>
<?php } elseif ($count == 1) { ?>
         <span>One Comment</span>
<?php } elseif ($count > 1 ) { ?>
         <span><?php echo $count; ?> Comments</span>

谢谢!

2 个答案:

答案 0 :(得分:2)

您可能希望将评论数量存储到post meta-data,以便以后可以使用它进行排序。

顺便说一下,由于您使用的响应格式和实际响应不同,您的功能将无法正常工作。 (评论数量出现在response->comments->count而不是response->comments)。此外,您可能希望使用fields=comments将响应限制为仅包含有关注释的详细信息而不包含所有其他数据,或使用FQL查询仅检索注释计数:

SELECT commentsbox_count FROM link_stat WHERE url = 'POST_URL'

我认为可能如此:

  • 在post-meta
  • 中存储评论数量
  • 在查看帖子后更新评论fb_comment_count的评论数
  • 使用query_postsmeta_key更改默认值。
function fb_comment_count() {
  global $post;
  $url = get_permalink($post->ID);

  $query = "SELECT commentsbox_count FROM link_stat WHERE url = '{$url}'";
  $responseText = file_get_contents('https://graph.facebook.com/fql?q='.$query);
  $responseJson = json_decode($responseText);

  $commenteCount = $responseJson->data->commentsbox_count;
  update_post_meta($post->ID, 'facebook_comments_count, $commenteCount);
  // ...
}

在您的帖子有facebook_comments_count meta后,您可以在The Loop中使用query_posts

query_posts('posts_per_page=5&meta_key=facebook_comments_count&orderby=meta_value&order=DESC')

答案 1 :(得分:1)

您需要将HTTP GET转到http://graph.facebook.com/comments?ids=,它将返回一个带有data属性的对象。该data属性将是一个注释对象数组(请参阅https://developers.facebook.com/docs/reference/api/Comment/

例如:

http://graph.facebook.com/comments?ids=http://www.stackoverflow.com/

{
   "http://www.stackoverflow.com/": {
      "data": [
         {
            "id": "450042939888_21515527",
            "from": {
               "name": "Anidhya Ahuja",
               "id": "1172382999"
            },
            "message": "abc",
            "created_time": "2011-10-11T13:55:15+0000"
         },
         {
            "id": "450042939888_21515536",
            "from": {
               "name": "Anidhya Ahuja",
               "id": "1172382999"
            },
            "message": "wass",
            "created_time": "2011-10-11T13:55:48+0000"
         }
      ],
      "paging": {
         "next": "http://graph.facebook.com/comments?ids=http\u00253A\u00252F\u00252Fwww.stackoverflow.com\u00252F&limit=25&offset=25&__after_id=450042939888_21515536"
      }
   }
}