Как создать пагинацию для комментариев по странично ?
Мне необходимо что б на странице кастомного типа записи выводилась кастомная форма отображения списка комментариев с пагинацией.
На других типах записи используеться пагинация других видов, для страниц, поэтому пишем в отдельном шаблоне миную comments.php
Благодаря вот этой статье get_query_var() Был написан вот такой код с параметрами cpage
custom-comments-template.php
<?php if (post_password_required()) { return; } $per_page = 4; $page = get_query_var('cpage') ?: 1; ?> <div id="comments" class="company-rewiew-list"> <h1>Per page = <?php echo $per_page?></h1> <h2>Page - <?php echo $page?></h2> <?php wp_list_comments(array( 'type' => 'comment', 'reverse_top_level' => false, // Отключите сортировку родительских комментариев от старых к новым 'reverse_children' => false, // Включите сортировку ответов на родительские комментарии от новых к старым 'callback' => 'reviews_theme_comment', 'per_page' => $per_page, 'cpage' => $page, )); ?> </div> <?php /// Pagination if ($per_page > 1){ $custom_pagination_template = locate_template('template-parts/custom-comments-pagination.php'); if ($custom_pagination_template) { include $custom_pagination_template; } } ?>
Сам же фаил пагинации custom-comments-pagination.php выглядит так
<div class="company-rewiew-pagination"> <?php $args = array( 'post_id' => get_the_ID(), // Идентификатор текущего поста 'parent' => 0, // Только родительские комментарии 'count' => true, // Запрос для получения количества комментариев ); $top_level_comments_count = get_comments($args); $max_pages = ceil($top_level_comments_count / $per_page); $args = array( 'screen_reader_text' => __('Comments navigation'), 'aria_label' => __('Comments'), 'class' => 'comments-pagination', 'base' => add_query_arg('cpage', '%#%'), 'format' => '', 'total' => $max_pages, 'current' => $page, 'add_fragment' => '', 'prev_text' => '❮', 'next_text' => '❯', 'type' => 'list', ); echo get_the_comments_pagination($args); ?> </div> <p>Page value <?php echo $page; ?></p> <p>Max Pages <?php echo $max_pages; ?></p> <p>$top_level_comments_count <?php echo $top_level_comments_count; ?></p>
Проблема в том, что я не понимаю, почему изначально меня брасает на "5" страницу (хотя если у меня 9 комментариев на странице 1го уровня а я задаю $per_page = 4; то должно быть максимум 3 и начинать должно с 1 страницы...), откуда это ? Как правильно задавать значение переменной $page = get_query_var('cpage') ?: 1; ?
Пробовал и так задавать $page = max(1, get_query_var('cpage')); не помогло.
Вот нашел ответ на свой вопрос. Что б сделать пагинацию для комментариеы. Может кому понадобится
а пагинация выглядит так