Постраничная навигация в комментариях WordPress без плагина

Так же, как и при создании постраничной навигации в архивах сайта, работающего на движке WordPress, можно сделать постраничную навигацию в комментариях без использования каких-либо плагинов.
Для этого используется специальная функция paginate_comments_links(), которая появилась в WordPress версии 2.7. Работает она на основе функции вывода постраничной навигации в архивах, а потому очень на нее похожа.
Код выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function wp_comments_corenavi() { $pages = ''; $max = get_comment_pages_count(); $page = get_query_var('cpage'); if (!$page) $page = 1; $a['current'] = $page; $a['echo'] = false; $total = 0; //1 - выводить текст "Страница N из N", 0 - не выводить $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница" $a['next_text'] = '»'; //текст ссылки "Следующая страница" if ($max > 1) echo '<div class="commentNavigation">'; if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $page . ' из ' . $max . '</span>'."\r\n"; echo $pages . paginate_comments_links($a); if ($max > 1) echo '</div>'; } |
Этот код вставьте в файл functions.php вашего шаблона. Здесь, как видите, те же самые 5 опций. Для наглядности я их также отделил разрывом строки.
Чтобы непосредственно отобразить постраничную навигацию в комментариях, вставьте следующий код в файл comments.php своего шаблона рядом с функцией wp_list_comments():
Ну и, конечно же, в html-коде полученной навигации присутствуют все необходимые классы, чтобы ее можно было красиво оформить с помощью CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div class="commentNavigation"> <a class="prev page-numbers" href="http://wordpress32/post/comment-page-6/#comments">«</a> <a class='page-numbers' href='http://wordpress32/post/comment-page-1/#comments'>1</a> <span class="page-numbers dots">...</span> <a class='page-numbers' href='http://wordpress32/post/comment-page-4/#comments'>4</a> <a class='page-numbers' href='http://wordpress32/post/comment-page-5/#comments'>5</a> <a class='page-numbers' href='http://wordpress32/post/comment-page-6/#comments'>6</a> <span class='page-numbers current'>7</span> <a class='page-numbers' href='http://wordpress32/post/comment-page-8/#comments'>8</a> <a class='page-numbers' href='http://wordpress32/post/comment-page-9/#comments'>9</a> <a class='page-numbers' href='http://wordpress32/post/comment-page-10/#comments'>10</a> <span class="page-numbers dots">...</span> <a class='page-numbers' href='http://wordpress32/post/comment-page-14/#comments'>14</a> <a class="next page-numbers" href="http://wordpress32/post/comment-page-8/#comments">»</a> </div> |
Пользуйтесь.
P.S. Не забудьте, что для того, чтобы работала постраничная навигация в комментариях, необходимо активировать разбивку комментариев на страницы, зайдя в админку на страницу “Параметры - Обсуждение”.
* * *
Про различные полезные WordPress плагины, информация о которых может пригодиться как начинающим блоггерам, так и бывалым, читайте на сайте seomans.ru, посвященном созданию и ведению блогов.
Классно, но я считаю, что разбивка коментариев на страници не удобна для посетителей. Например мне очень не удобно так читать коментарии. Даже на хабре не разбивают, где коментариев несколько сотен.
И еще очень классная кнопка “Отправить коментарий”, аж захотелось написать :)
У всех свои предпочтения. Я вот не люблю, чтобы страницы была слишком длинной из-за большого количества комментов.
Ну да, каждому свое. Еще сильно бесит когда сначала новые коментарии.
не у софкейза случаем взял идею кнопки такой? ) А то уж больно похожи
Случаем нет.
Интересно, не знал. Думаю сделаю так, после редизайна :)
А у меня файл functions.php начинается со строк:
<?php
if ( function_exists(’register_sidebar’) )
register_sidebar();
это сразу после этой строки прилепить указанный вами код?
Да.
Не хватает только примерчика css-кода…
Спасибо за статью, интересно.
Будем пробовать реализовать=)
Ну и что… Мне например нужно что бы комментарии индексировались. У меня это основной контент. http://hozjajstvo.ru Для меня этот вариант стал спасением. Перепробовал кучу плагинов, все отстой, а здесь все просто, и именно так как нужно и без лишней нагрузки на базу.
И грузится быстрее и людям просматривать легче.
а как подобное сделать в темах от YooTheme? у них немного другие шаблоны WP у меня стоит от них тема гляньте тут
Я не знаком с такими шаблонами.
Респект за пост!
Все испробованные плагины для того же самого или не работали или оказались кривыми, так что то моя последняя надежда сделать постраничную навигацию комментариев, но, к сожалению, я внимательно перечитал 2 раза но так и не понял как это все сделать, сам движок мне давно знаком, а вот php не понимаю. Нельзя ли поподробнее инструкцию?
by1, хабр не эталон…
А можно пример с использованием драйвера PDO для базы.. а то с sql на вы…
А такой способ постраничной навигации подойдет для примерно 2500 строк?
У меня не получилос вставил коды ну так же как и раньше пишет
Старые комментарии
Свежие комментарии »
по страницам не разбился что делать подскажите пожалуйсто!
Можно быть надо сбросить кэш сайта, либо что-то неправильно делаете. Наугад сложно сказать.
по второму пункту у меня после него вставить? и по третему пункту я не понял это где надо делать?
так же по первому пункту
у меня начало такое
<?php
// Get URL of first image in a post
function catch_that_image() {
global $post, $posts;
$first_img = ”;
ob_start();
ob_end_clean();
вот мой блог http://www.wordpress.shop21vek.ru/ подскажите мне пожалуйсто!
помогите пожалуйсто что надо в этом коде менять ?
2
3
4
5
6
7
8
9
<?php wp_list_comments2(); ?> <?php if(function_exists('wp_comments_corenavi')) wp_comments_corenavi(); ?>
</div>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link(N) ?></div>
<div class="alignright"><?php next_comments_link(N) ?></div>
</div>
Вот тут очень хорошо расписано, как правильно редактировать файл functions.php - http://wp-kama.ru/id_71/fayl-shablona-functionsphp-v-wordpress.html
Только удалить этот код:
2
3
4
<div class="alignleft"><?php previous_comments_link(N) ?></div>
<div class="alignright"><?php next_comments_link(N) ?></div>
</div>
Уважаемый блогер вебмастер ей богу я готов вам руки целовать вы мне очень помогли! я ваш должный честное слово если что обращайтесь shop21vek@ya.ru
по 3 пункту в каком php файле находиться чтоб красиво отредактировать отображения цифр?
Пожалуйста =)))
Это делается с помощью CSS. Стили меняются в файле style.css.
Интересно, по по-вашему слово длинная страница… 30 комментариев смотрю у вас и нормально… нет никакой постраничной навигации, сколько штук 200 должно быть на странице?