Функция get_comments для отображение последних комментариев
Столкнулся недавно с интересной ситуацией — некоторые страницы сайта с самыми популярными статьями вдруг перестали загружаться. Подробное изучение симптомов 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 в разделе «Параметры» — «Обсуждение» есть некоторые настройки для страниц комментариев.
Изначально я в блоге использовать настройки отображать сверху страницы самые ранние записи, причем по умолчанию сразу должна грузиться последняя страница комментариев. После использование хака и функции get_comments работать это все стало как-то криво. Поэтому я перешел на опцию загрузки самой первой страницы + старых комментариев сверху. Что интересно, но при этом сверху грузились именно новый — то ли глюк системы, то ли странная специфика функции.
P.S. Если вы работаете онлайн, то статья про мои источники вдохновения возможно пригодится и поможет отыскать подходящие для себя приемы.
Любое серьезное дело сталкивается с разными вопросами и нюансами, юридические услуги Киев и опытные юристы помогут решить все правовые споры и задачи.
Украсить приусадебные участок можно по-разному, например, установить фонтан хотя эта причуда обойдется вам в копеечку, также его нужно будет потом обслуживать.
комментариев 5 к статье “Функция get_comments для отображение последних комментариев”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,87 из 7, голосов - 45)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
А ещё можно прикрутить disqus и вообще проблем не знать =) Благо перенести можно достаточно быстро все имеющиеся.
arinoki, я не уверен, что дискус сможет «скушать» 5000 комментариев без проблем, он обычно и так грузится не слишком быстро. Вот если бы выводить не все комментарии тогда да.
Александр, а не подскажите как вывести комментарии к одной только странице? Спасибо!)
Евгений, для получения комментариев с помощью функции get_comments для конкретной записи есть параметр post_id — с ним бы экспериментировал. Но если нужно решение попроще — возможно, есть какой-то виджет или плагин для отображения такого.
Александр, с ним я и экспериментировал, с этим параметром, поиск виджетов и плагинов так-же не дал результатов!( Пока решение так и не нашел..