Функция get_comments для отображение последних комментариев

Опубликовано: 07.10.2017

Столкнулся недавно с интересной ситуацией — некоторые страницы сайта с самыми популярными статьями вдруг перестали загружаться. Подробное изучение симптомов wordpress глюка показало, что виной всем слишком большое количество комментариев — после 5000 вы увидите пустое белое окно браузера. Решить задачу, по сути, можно двумя способами — удалить старые комментарии или отображать лишь часть из них (самые актуальные). Казалось бы первый случай слишком радикален, но, учитывая характер комментариев (общение), пользы от двухлетних записей никакой нет — никто не будет просматривать даже 10 страниц комментариев не говоря о десятках. Тем не менее, я решил все же разобраться со вторым вариантом.


Section 2

Итак, задача у нас стоит — отображать, скажем, 500 последних и самых новых комментариев для страницы блога. Начнем издалека. Все комментарии отображаются на странице с полным текстом записи, то есть шаблон single.php. В нем найдете строку:

<?php comments_template ( ) ; ?>

<?php comments_template(); ?>

А это значит что отвечает за комментарии в блоге еще один файл шаблона — comments.php , все самое интересное находится там. Классический код будет похожим на это:

<?php if ( ( have_comments ( ) ) && ( get_comments_number ( ) > 0 ) ) : ?> <h3 class="comments"> <?php comments_number ( 'Нет комментариев' , '1 комментарий' , 'Комментариев - %' ) ; ?> к статье <strong> <?php the_title ( ) ; ?> </strong></h3> <div class="post-navigation" style="text-align: center;"> <?php paginate_comments_links ( ) ; ?> </div> <ol class="commentlist"> <?php wp_list_comments ( 'callback=mytheme_comment' ) ; ?> </ol> <div class="post-navigation" style="text-align: center;"> <?php paginate_comments_links ( ) ; ?> </div>

<?php if ((have_comments()) && (get_comments_number() > 0)) : ?> <h3 class="comments"><?php comments_number('Нет комментариев', '1 комментарий', 'Комментариев - %' );?> к статье <strong><?php the_title(); ?></strong></h3> <div class="post-navigation" style="text-align: center;"><?php paginate_comments_links(); ?></div> <ol class="commentlist"> <?php wp_list_comments('callback=mytheme_comment'); ?> </ol> <div class="post-navigation" style="text-align: center;"><?php paginate_comments_links(); ?></div>

rss