Как изменить сингулярное / множественное число на «комментарий» на «комментарии» к числу комментариев 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.

С помощью тега 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> 

Или:

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

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

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

Я объединил решение Джона с 9- часовым концом с 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'; }