3

だから私が心に留めているのは、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>

ありがとう!

4

2 に答える 2

2

後で並べ替えに使用できるように、メタデータを投稿するためにコメントの数を保存することをお勧めします。

ところで、使用する応答形式と実際の応答が異なるため、関数は機能しません。(コメントの数はに存在し、に存在しresponse->comments->countませんresponse->comments)。またfields=comments、応答を制限して、残りのデータをすべて含まずにコメントに関する詳細のみを含めるか、FQLクエリを使用してコメントの数のみを取得することもできます。

SELECT commentsbox_count FROM link_stat WHERE url = 'POST_URL'

私が見るところの流れはそうかもしれません:

  • ポストメタ内にコメントの数を保存する
  • fb_comment_count投稿が表示されたときに呼び出されるコメントの数を更新する
  • デフォルトを変更するには、query_postswithを使用します。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 メタquery_postsが含まれると、The Loopで使用できます:

query_posts('posts_per_page=5&meta_key=facebook_comments_count&orderby=meta_value&order=DESC')
于 2012-03-25T14:39:19.870 に答える
1

HTTP GETにアクセスするhttp://graph.facebook.com/comments?ids=と、データプロパティを持つオブジェクトが返されます。そのデータプロパティはコメントオブジェクトの配列になります(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"
      }
   }
}
于 2012-01-19T01:19:41.137 に答える