所以我想到的是根据他们有多少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>
谢谢!
答案 0 :(得分:2)
您可能希望将评论数量存储到post meta-data,以便以后可以使用它进行排序。
顺便说一下,由于您使用的响应格式和实际响应不同,您的功能将无法正常工作。 (评论数量出现在response->comments->count
而不是response->comments
)。此外,您可能希望使用fields=comments
将响应限制为仅包含有关注释的详细信息而不包含所有其他数据,或使用FQL查询仅检索注释计数:
SELECT commentsbox_count FROM link_stat WHERE url = 'POST_URL'
我认为可能如此:
fb_comment_count
的评论数query_posts
和meta_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"
}
}
}