Мар
27
5

Функция get_comments для отображение последних комментариев

wordpress комментарииСтолкнулся недавно с интересной ситуацией — некоторые страницы сайта с самыми популярными статьями вдруг перестали загружаться. Подробное изучение симптомов wordpress глюка показало, что виной всем слишком большое количество комментариев — после 5000 вы увидите пустое белое окно браузера. Решить задачу, по сути, можно двумя способами — удалить старые комментарии или отображать лишь часть из них (самые актуальные). Казалось бы первый случай слишком радикален, но, учитывая характер комментариев (общение), пользы от двухлетних записей никакой нет — никто не будет просматривать даже 10 страниц комментариев не говоря о десятках. Тем не менее, я решил все же разобраться со вторым вариантом.

Итак, задача у нас стоит — отображать, скажем, 500 последних и самых новых комментариев для страницы блога. Начнем издалека. Все комментарии отображаются на странице с полным текстом записи, то есть шаблон single.php. В нем найдете строку:

<?php comments_template(); ?>

А это значит что отвечает за комментарии в блоге еще один файл шаблона — comments.php , все самое интересное находится там. Классический код будет похожим на это:

<?php if ((have_comments()) && (get_comments_number() > 0)) : ?>
<h3 class="comments"><?php comments_number('Нет комментариев', '1 комментарий', 'Комментариев - %' );?> к статье <strong><?php the_title(); ?></strong></h3> 
<div class="post-navigation" style="text-align: center;"><?php paginate_comments_links(); ?></div>
<ol class="commentlist">
<?php wp_list_comments('callback=mytheme_comment'); ?>
</ol>
<div class="post-navigation" style="text-align: center;"><?php paginate_comments_links(); ?></div>

Условие проверяет наличие комментариев к посту, функция paginate_comments_links выводит постраничную навигацию, а wp_list_comments задает формат отображение записей комментариев — где и как выводить аватар, тексты, имя автора. Все это, кстати определяется функцией mytheme_comment, которую найдете в файле functions.php (да, запутано:).

Так, вот для решения нашей задачи перед условием (if) или сразу после этой строки нужно добавить вызов get_comments:

<?php $comments = get_comments( array( 'number' => 500, 'order' => 'DESC', 'status' => 'approve',  'post_id' => get_the_ID() ) ); ?>

Данная функция используется для получения комментариев, рассмотрим ее параметры:

  • $status — выборка записей комментариев указанного типа: ‘hold’ — пока еще не одобренные, ‘approve’ — одобренные, ‘spam’ — спам комментарии, ‘trash’ — удаленные.
  • $orderby — поле для сортировки комментариев, по умолчанию — дата (comment_date_gmt)
  • $order — порядок сортировки ‘ASC’ и ‘DESC’, по умолчанию DESC — от самых новых к старым.
  • $number —  количество комментариев для выборки.
  • $offset — смещение для последних комментариев — сколько нужно «пропустить» перед выборкой нужного числа ($number) записей.
  • $post_id — используется для отображения комментариев только к последнему посту. Если бы нужно было показать вообще все последние комментарии, то параметр можно не использовать.

В нашем случае для вызова get_comments я определил показ последних 500 комментариев, причем только для текущего поста . Спасибо за это функции get_the_ID. Также не забывайте указать статус (status) для комментариев дабы в список не попали еще неподтвержденные или спам.

Напоследок еще один момент. В админке wordpress в разделе «Параметры» — «Обсуждение» есть некоторые настройки для страниц комментариев.

wordpress комментарии

Изначально я в блоге использовать настройки отображать сверху страницы самые ранние записи, причем по умолчанию сразу должна грузиться последняя страница комментариев. После использование хака и функции get_comments работать это все стало как-то криво. Поэтому я перешел на опцию загрузки самой первой страницы + старых комментариев сверху. Что интересно, но при этом сверху грузились именно новый — то ли глюк системы, то ли странная специфика функции.

P.S. Если вы работаете онлайн, то статья про мои источники вдохновения возможно пригодится и поможет отыскать подходящие для себя приемы.
Любое серьезное дело сталкивается с разными вопросами и нюансами, юридические услуги Киев и опытные юристы помогут решить все правовые споры и задачи.
Украсить приусадебные участок можно по-разному, например, установить фонтан хотя эта причуда обойдется вам в копеечку, также его нужно будет потом обслуживать.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 3, средний балл: 2,67 из 7)
Загрузка...

категория Категории: Возможности; Хаки и секреты;
теги Теги: , , , , .

комментариев 5 к статье “Функция get_comments для отображение последних комментариев”

  • arinoki   27.03.2012

    А ещё можно прикрутить disqus и вообще проблем не знать =) Благо перенести можно достаточно быстро все имеющиеся.

  • Tod   27.03.2012

    arinoki, я не уверен, что дискус сможет «скушать» 5000 комментариев без проблем, он обычно и так грузится не слишком быстро. Вот если бы выводить не все комментарии тогда да.

  • Евгений   23.09.2012

    Александр, а не подскажите как вывести комментарии к одной только странице? Спасибо!)

  • Tod   24.09.2012

    Евгений, для получения комментариев с помощью функции get_comments для конкретной записи есть параметр post_id — с ним бы экспериментировал. Но если нужно решение попроще — возможно, есть какой-то виджет или плагин для отображения такого.

  • Евгений   24.09.2012

    Александр, с ним я и экспериментировал, с этим параметром, поиск виджетов и плагинов так-же не дал результатов!( Пока решение так и не нашел..

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Последние посты
Полезные заметки
Лучшее в категории
Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости