Как изменить единственное/множественное число в комментарии на количество комментариев в Facebook?

Я хотел бы, чтобы мои субтитры в моем блоге Wordpress подсчитывали количество комментариев Facebook к моему посту. После вставки кода Facebook

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

Я понимаю, что когда у меня есть только 1 комментарий, он печатает «1 комментарий» во множественном числе. Какие изменения в коде мне нужно сделать, чтобы:

  • печатать «Без комментариев», когда нет комментариев
  • вывести "1 комментарий" в единственном числе, если только один комментарий
  • вывести «X комментариев» во множественном числе, если комментариев больше одного

Извините, если это глупый вопрос, но я совершенно новичок в программировании (PHP), Wordpress и инструментах Facebook.


person antr    schedule 27.11.2011    source источник


Ответы (3)


Используя тег fb:comments-count сам по себе, вы не можете. Что вам нужно сделать, так это сначала получить количество комментариев в переменную PHP, а затем напечатать правильную фразу в зависимости от значения этой переменной. Вы можете получить количество комментариев с помощью PHP SDK, FQL или Graph 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>

Or:

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

Альтернативой прямому методу PHP может быть использование функции ngettext().

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

Я объединил решение Джона с советом 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';
     }
person Jon Harvey    schedule 24.01.2015