WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика

Получение и вывод Комментариев с пагинацией

Код ниже показывает, как в WordPress вывести комментарии пользователя со ссылками пагинации. Для этого нужно использовать класс WP_Comment_Query.

Допустим мы выводим комментарии на странице /user-comments и номер страницы пагинации мы ходим добавлять через GET параметр ?pagenum=10. Выводить будем по 50 комментариев на странице. Для создания HTML кода ссылок пагинации будем использовать функцию paginate_links().

$per_page = 50;
$pagenum = $_GET['pagenum'] ?? 1;
$offset = ($pagenum - 1) * $per_page;
$paged_url_patt = home_url( preg_replace( '/[?&].*/', '', $_SERVER['REQUEST_URI'] ) ) .'?pagenum=%#%';

$query    = new WP_Comment_Query;
$comments = $query->query( [
	'order'   => 'DESC',
	'user_id' => $user_id,
	'offset'  => $offset,
	'number'  => $per_page,
	'no_found_rows'  => false,
] );

//$total_comments = (int) $query->found_comments;
$max_pages      = (int) $query->max_num_pages;

$paginate_links = paginate_links( [
	'base'    => $paged_url_patt,
	'current' => $pagenum,
	'total'   => $max_pages
] );

echo $paginate_links;

В результате получим следующий код пагинации:

<a class="prev page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=2">← Ранее</a>
<a class="page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=1">1</a>
<a class="page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=2">2</a>
<span aria-current="page" class="page-numbers current">3</span>
<a class="page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=4">4</a>
<a class="page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=5">5</a>
<span class="page-numbers dots">…</span>
<a class="page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=75">75</a>
<a class="next page-numbers" href="https://wp-kama.dev/profile/comments?pagenum=4">Далее →</a>

Эта заметка встроена в: get_comments()
Комментариев нет
    Войти