如何在Facebook的评论数量上将“评论”上的单数/复数更改为“评论”?

时间:2011-11-27 16:17:51

标签: php wordpress facebook-comments

我希望我的Wordpress博客中的字幕可以计算我帖子上Facebook评论的数量。插入Facebook的代码后

<span class="comment-count">
   <fb:comments-count href="<?php echo get_permalink($post->ID); ?>">
   </fb:comments-count> comments
</span>

我意识到,当我只有一条评论时,会打印出“1条评论”,复数形式。我需要对代码进行哪些更改才能:

  • 打印“没有评论”时没有评论
  • 以单数形式打印“1条评论”,只有一条评论
  • 打印“X comments”复数形式,当多个评论

很抱歉,如果这是一个愚蠢的问题,但我完全不熟悉编码(PHP),Wordpress和Facebook工具。

3 个答案:

答案 0 :(得分:5)

单独使用fb:comments-count标记,您不能。您需要做的是首先将注释的数量放入PHP变量中,然后根据该变量的值打印正确的短语。您可以使用PHP SDKFQLGraph API检索评论数量。然后,一种打印你想要的方式:

 <?php
 $comments = getCommentCountUsingGraphAPI();

 if ($comments == 0) {
    echo "No comments";
 } elseif ($comments == 1) {
    echo "1 comment";
 } else {
    echo "$comments comments";
 }
 ?>

但是妥协要容易得多,只需稍微修改一下你的演示文稿就可以完全避免复数问题:

 <span class="comment-count">
      Comments: <fb:comments-count href="<?php echo get_permalink($post->ID); ?>"></fb:comments-count>
 </span>

或者:

 <span class="comment-count" title="Comments">
      <fb:comments-count href="<?php echo get_permalink($post->ID); ?>"></fb:comments-count>
 </span>

答案 1 :(得分:3)

直接PHP方法的替代方法是使用ngettext()函数。

<?php
echo ngettext("%d comment", "%d comments", $comments);
?>

答案 2 :(得分:0)

我将John的解决方案与9bugs结合起来  提示使用FQL,效果很好。将其添加到functions.php:

 function fbCount($url) {
    $base_url = "http://graph.facebook.com/fql?q=";
    $query = "SELECT like_count, total_count, share_count, click_count, comment_count FROM link_stat WHERE url = '$url' ";
    $new_url = $base_url . urlencode($query);
    $data = @file_get_contents($new_url);
    $data = json_decode($data);
    return $data->data[0];
}

然后将其添加到您希望注释计数显示在content.php中的位置:

    $url = get_permalink($post->ID);
    $fb = fbCount($url);

     if ($fb->comment_count == 0) {
        echo '<a href="' . $url . '"> leave a comment! </a> ';
     } elseif ($fb->comment_count == 1) {
        echo '<a href="' . $url . '"> 1 </a> comment';
     } else {
        echo '<a href="' . $url . '"> '. $fb->comment_count .  '</a> comments';
     }