Как изменить единственное / множественное число в «комментариях» на «комментарии» в количестве комментариев Facebook? - PullRequest
3 голосов
/ 27 ноября 2011

Я бы хотел, чтобы мои субтитры в моем блоге 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.

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

Использование тега 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>
3 голосов
/ 07 июля 2013

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

<?php
echo ngettext("%d comment", "%d comments", $comments);
?>
0 голосов
/ 24 января 2015

Я объединил решение Джона с 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';
     }
...