C вопросом пагинации комментариев могут столкнуться пользователи WordPress использующие либо старую (олдскульную) тему оформления (шаблон), либо чрезмерно упрощенную. Например, на этом блоге используется тема выводящая комментарии своим собственным кодом в файле comments.php.
Соответственно теряются все преимущества использования стандартной функции wp_list_comments, таких как использование функций показывающих навигацию по страницам комментариев, разбитых в соответствии со стандартной настройкой «обсуждения» «Разбивать комментарии верхнего уровня на страницы по…»
Рассмотрим как решить задачу, не используя расширения (плагины) от третьих лиц .
Во превых обратим свое внимание на официальную документацию к функции wp_list_comments.
Как видим, поддерживается callback-функция отображающая каждый комментарий к одному посту. Соотвественно, в файле comments.php мы можем вызвать стандартную функцию wp_list_comments и в качестве параметра передать ей нашу функцию отображения отдельного комментария, примерно так:
<ul id="comments" class="comments"> <?php wp_list_comments('type=comment&callback=my_list_comments', $comments); ?> </ul> |
Куда поместить функцию my_list_comments? Пожалуй в любом wordpress-шаблоне существует файл содержащий набор пользовательских функций, в общем случае будем считать, что он называется functions.php (неожиданно, не правда ли? ).
Именно в него поместим функцию отображения единичного коммента:
<?php // Пользовательская функция отображения комментария function my_list_comments($comment, $args, $depth) { $GLOBALS['comment'] = $comment; ?> <!-- содержание комментария --> <li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>"> <?php echo get_avatar($comment, 32); ?> <?php comment_date('d.m.y') ?> <?php comment_author_link() ?>:<span style="float:right;"><?php edit_comment_link('edit','',''); ?></span> <?php if ($comment->comment_approved == '0') : ?> <p><em>Спасибо. Ваш комментарий ожидает модерации.</em></p> <?php endif; ?> <div> <?php comment_text() ?> </div> <?php } // </li> Добавит сам WordPress ?> |
Соответственно теперь, мы можем использовать функции для вывода навигации по страницам комментариев, например, paginate_comments_links, например, так:
<?php if (get_option('page_comments')): $comment_pages = paginate_comments_links('echo=0'); if ($comment_pages): ?> <div class="comment-navigation clear-block"> <?php echo $comment_pages; ?> </div> <?php endif; endif; ?> |
Отличная статья. Также рекомендую почитать тут насчет пагинации страниц kvinta-a.ru/oformlenie-paginatsii-na-saytakh/