Разбиение комментариев на страницы в wordpress без плагинов
После рассмотрения вопроса (проблемы) с древовидными комментариями в wordpress, мне предстояла очередная задача – разбить эти самые комментарии на страницы. Принялся искать различные решения в англоязычных блогах, но как-то все весьма скромно – 90% информации было о сомнительных плагинах (совместимость которых проверена только с устаревшими версиями wordpress). Собственно на это есть свои причины – как и с древовидными комментариями, функция разбиения по страницам стала доступной в wordpress по умолчанию, и может быть внедрена средствами самой системы без помощи сторонних плагинов. После небольшого вступления перейдем непосредственно к решению вопроса.
1. Первым делом заходим в раздел «Настройки» пункт меню «Обсуждение». Здесь сразу после пункта включения древовидных комментариев вы увидите поле для разбиения по страницам:
В настройках wordpress вы можете указать сколько комментариев должно помещаться на одной странице, какую страницу отображать по умолчанию (первую или последнюю), а также порядок сортировки самих комментариев на страницах – сверху отображаются либо новые, либо старые записи посетителей. Тут каждый должен установить настройки по своему усмотрению, мои параметры смотрите на рисунке выше.
2. Второй шаг – это подготовка шаблона. Если у вас новомодный макет, который учитывает все плюсы последних версий wordpress (в том числе и разбиение комментариев по страницам), то вам повезло. Ничего делать не нужно – просто наслаждайтесь ведением блога. В противном случае над комментариями придется «поколдовать».
В версиях wordpress старше 2.7 за вывод комментариев отвечает функция wp_list_comments(), поэтому вывод комментариев в шаблоне придется изменить так, как это описано в моей статье про древовидными комментариями в wordpress (если что там же есть ссылка на аналогичный пост еще одного специалиста по wordpress Дмитрия Донченко – тоже можете использовать).
3. Третий пункт – добавления навигации по комментариям. После правки шаблона и включения настроек в админке, вы должны получить работающее разбиение по страницам. То есть при наличии нужного числа комментариев в блоге вы увидите отображение последней их страницы, например, если к посту набралось 53 записи, а на каждой странице по 50 сообщений, то увидите всего лишь 3. Нужно добавлять навигацию, для этого используем специальные функции wordpress:
<div class="navigation1"><?php paginate_comments_links(); ?></div> <ol class="commentlist"> <?php wp_list_comments('callback=mytheme_comment'); ?> </ol> <div class="navigation2"><?php paginate_comments_links(); ?></div> |
Код выше выводит до и после комментариев перечень допустимых страниц. Использую для этого функцию paginate_comments_links().
Кроме того, существуют еще 2 функции previous_comments_link, next_comments_link, которые выводят ссылку на предыдущую и следующую страницу комментариев без цифр. В общем, используйте вариант, который вам наиболее подходит.
4. После настройки всех функциональных особенностей разбиения комментариев на странице следует позаботиться о дублированном контенте. При разбиении вы получаете отдельные страницы с одинаковым текстом и разными комментариями – да, последние могут внести какое-то разнообразие в внешний вид страницы перед поисковиками, но основного теста значительно больше. В общем, нужно закрыть от индексации страницы с комментариями – для этого вам пригодится плагин Platinum SEO (очень хорошая штука). В настройках плагина есть опция «Use noindex for comment pages of posts». Активируя ее, вы получите в коде каждой страницы с комментариями запись:
<meta name="robots" content="noindex,follow" /> |
Что запрещает индексирование контента этой страницы. Вот, в принципе, и все:) По-моему, алгоритм ясен и предельно прозрачен. Если есть какие-то вопросы и дополнения – пишите в комментариях.
P.S. Постовой у нас сегодня необычный. Предлагаю вашему вниманию сервис рассылки сообщений UniSender, который предлагает быструю персонализированную рассылку e-mail сообщений с возможностью использования HTML и отправки файлов. UniSender обладает рядом преимуществ и уникальный возможностей, выделяющих его среди конкурентов. Во-первых, это беспроблемная рассылка – вы просто загружаете контакты клиентов и составляете письмо, все технические вопросы относительно почтовых серверов, проблем со спам листами вас не касаются. UniSender предлагает автоматизацию ведения списков рассылки – подписка, отписка, отсеивание нерабочих адресов и противостояние спаму. Также вы можете задать оформленные HTML-сообщения по своему усмотрению с помощью удобного текстового редактора, а после проведения кампании сможете проанализировать ее статистическую информацию и эффективность. В общем, UniSender позволит организовать ваши email рассылки профессионально и качественно.
Ожидал уже увидеть SQL запрос с LIMIT :)
Встречал пару раз разбиение по страницам. Главный минус — неявно то что это первая страница комментариев. Список страниц с каментами лучше выводить и под списком и над — так удобнее и увеличивается интерес посетителя к комментированию.
BOLVERIN, согласен — вывожу также и под и над, выделяя заметно — думаю, в 99% адекватный человек поймет что где:)
Самое интересное что если человек видит что комментариев больше чем на одну страницу, то он постарается написать и сам один :) Стандный инстинкт, наверно :)
А я, наоборот, вижу комментариев на несколько страниц и никогда не буду оставлять :) По моему лучше на одну страницу.
Sosnovskij, BOLVERIN, ну разбиение комментариев на страницы я делаю чтобы они компактно помещались на сайте — представляете как будет выглядеть страница с 200-300 комментариями — это ж невозможно прокрутить все:)
Tod, безусловно, если есть такое количество комментариев, то да. Про дублированный контент не надо еще забывать.
2 Sosnovskij: зря беспокоишся :) при таком кол-ве комментариев на странице уникальность не будет меньше 70%. ведь считывается текст вместе с каментами, а не только пост.
Про уникальность я написал в статье — пункт 4. Все предусмотрено:)
нууу. так не интересно :)
можно попробовать скрывать от поисковиков статью подгружая ее AJAX-скриптом. Лишних внутренних страниц не бывает :)
Для вывода через AJAX нужно писать плагин, тот, который был в наличии все равно создавал страницы для отдельных комментариев дублирую контент.
Для сапы конечно лишних внутренних не бывает, но имхо иногда лучше качество чем количество — представь ситуацию ты создаешь строго оптимизированный текст с нужным процентом вхождения ключей, а потом все это разбавляет каментами + дублируется на подстраницах — в общем, тут, конечно, каждый решает сам как ему поступать.
хм.а почему бы тогда не сделать так как я сказал, только кроме комментариев еще и ссылку на статью подгружать, ну и еще что то определенное для каждой статьи? тогда качество страницы-поста только выростет ( в глазах поисковика ) + дополнительные НЧ из переписки в каментах. если немного повозится, то и для каждой отдельной страницы комментариев можно сделать определенные анкоры для ссылок на страницу-пост где не закрыт от индексации текст поста, но закрыты комментарии.
Персонализированные расслки известны довольно давно, начинал их создавать в сервисе smartrespond или в чем-то подобном, поэтому не такое уж это необычное явления)
Быть может я не умею работать с поисковиками, но в 40% случаев ответы на интересующие вопросы нахожу именно в комментариях (например, если кто то уже спрашивал то что интересует сейчас меня), так что полностью отказаться от их индексации, как по мне, значит лишить себя куевой хучи полезных в хозяйстве ключевиков. А если они не совсем вписываются в тематику статьи то кто мешает их немного гмм… подредактировать, ну или удалить наконец.
Кстати, спасибо за пост =)
как упорядочить каментарии по голосованию с плагином комент рэйтинг
Что-то развить комменты на странице по 50 или 10, чтобы не ставил, пока не работает((( Буду пытаться дальше. Шаблончик наверно дает о себе знать.
Дмитрий, да, наверное, шаблон старый или неподходящий, я в новых тема на 99% вижу что разбиение на страницы работает.
Спасибо за подробное изложение, уже думал тему допиливать,
но у меня не много таких страниц с кучей комментариев, поэтому решил это отложить.
а то что опция не работала меня вначале удивило:-)
А куда код вставлять?
Игорь, все зависит от вашего шаблона. Если тема современная, то там наверняка уже поддерживается разбиение комментариев на страницы — просто активируете опцию в настройках. В противном случае нужно будет вносить правки в wp_list_comments + добавлять страницы paginate_comments_links. Для этого потребуется изучить файлы шаблона и найти какой из них отвечает за вызов комментариев. Это может быть comments.php или похожий.
Благодарю за статью. Оказывается, разбить комментарии на страницы- это элементарно. А то у меня статья вылетела из поиска как раз из-за большого количества комментов.
Не забываем про дубли, которые создают страницы комментов :)
Айк, ну в статье я об этом говорил, все правильно — страницы комментариев лучше не индексировать. А вообще плагин Yoast советует их и не создавать, т.к. в большинстве случаев пользователям они не нужны.