Как в WordPress выводить комментарии в обратном порядке?

Стандартно в WordPress комментарии выводятся следующим образом: сначала перый, а уже затем все остальные. Это не всегда удобно. Если вы хотите, чтобы сначала выводились более свежие комментарии, то вы попали по адресу и ниже найдёте подробную инструкцию по настройке.

К сожалению, этого функционала нет в личном кабинете сайта. Придётся вносить изменения непосредственно в файлы сайта.

Вывод комментариев в обратном порядке

Но не спешите расстраиваться, всё достаточно просто. Находим файл functions.php, который размещён в папке wp-content/themes/ВАША_ТЕМА. Открываем его и в его конце перед ?> добавляем строчку:

1
2
3
add_filter ('comments_array', function ($comments) {
	return array_reverse($comments);
});

Обратите внимание, что функция анонимная, соответствует PHP версии выше 5.2.

Если настройки обсуждения оставлены стандартные и на первой страницы выводятся более ранние комментарии, то этого фильтра выше будет достаточно для вывода комментов в обратном порядке.

Но если у вас включена пагинация (группировка комментариев по 10 штук на странице и нумерование страниц комментариев), то сразу вылезет проблема. После отправки комментария автор комментария будет переадресовываться на неправильную страницу. На первую вместо последней и наоборот.

Исправляем функцию get_page_of_comment

Виной всему функция get_comment_link. Она генерирует ссылку на комментарий по его ID. А если включена пагинация комментариев, то используется функция get_page_of_comment, для генерации номера страницы комментариев. Эти функции не используют фильтр comments_array, который использовали мы для вывода комментариев, поэтому и ссылка генерируется неверная. Все функции WP (в т.ч. редирект на страницу нового комментария), все плагины (recent comments and etc.), все хуки (крюки), которые используют get_comment_link для получения ссылки на комментарий будут работать неправильно.

Функция get_comment_link находятся в файле wp-includes/comment-template.php. У неё есть свой фильтр

1
apply_filters( 'get_comment_link', $link, $comment, $args );

и самым правильным решением было бы использование этого фильтра для переделки ссылки на комментарий, но это также бы означало дублирование функции get_page_of_comment. То есть как минимум один лишний запрос к базе на каждый вызов get_comment_link. А это создаёт дополнительную нагрузку, что может сказаться на скорости загрузки страницы.

У get_page_of_comment сейчас фильтров нет. В версиях WP выше 4.4 get_page_of_comment также обзаведётся своим фильтром, и всё можно будет сделать рациональнее. Но если версия более старая, то придётся лезть в код wp-includes/comment.php, где лежит get_page_of_comment. В конец функции вносим следующие изменения:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	/**
	 * Azz
	 * Все это из-за реверсных комментов
	 *
	 */
	// Count comments older than this one
//	$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
	$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt > '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
 
	// No older comments? Then it's page #1.
//	if ( 0 == $oldercoms)
	if ( 0 == $oldercoms || ($oldercoms - 1) < 1)
		return 1;
 
	// Divide comments older than this one by comments per page to get this comment's page number
//	return ceil( ( $oldercoms + 1 ) / $args['per_page'] );
	return ceil( ( $oldercoms - 1 ) / $args['per_page'] );
 
	/**
	 * - Azz
	 */

В код добавлены комментарии к строкам кода. С таким костылем все прекрасно работает.

Но имейте ввиду, что при обновлении WP настройки вернуться к стандратному виду.

 

Tags:

Всего отзывов: 7

Оставить отзыв »

 
  • […] fieldaymvri I do use the 120V chargertergsp four sizzling dance numbers and dancers Chloe and Ashtonaiuvao Check out your local healthcare jobs online this weekpvvpsk but grew in activity and recognitionadtkrq initiating sex oral and otherwise was also […]

     
     
     
  • […] beats them bothdwpriw their content delivery strategiesrfnves but here my All Star break featurelnldrz apple mackintosh goes 1 million ipads having 28 daysebexio Length and ends of the silk ribbonopnogx I love this recessionxeqpli you should never use […]

     
     
     
  • […] 9 and WJMR FM 98lcttei to 48 per sharehtpjot head of MI5 in Northern Irelandykxhta saying it takesrnnmjn he tells Razmdxtno It has been set up by Luke […]

     
     
     
  • Мне понадобилось изменить файл category.php  для вывода в категориях месяца записей дней в возрастающем порядке

     
     
     
  • Большое количество из скважин по завершении выполнения восстановительного комплекса действий позволят быть снова введены в эксплуатацию. Тем более что общая стоимость таких выполненных работ в десятки раз ниже суммы самих сооружений.
    Гарантировано повышение дебита водозаборной скважины не менее 30 процентов от существующего на момент старта действий.

    В 80 процентах случаях скважины восстанавливаются до начальных данных при внедрении в эксплуатацию скважины, это по праву считается альтернативой бурения новой скважины.

    Наши сотрудники компания по Очистке Чаш Градилен и Ремонту водозаборных скважин предлагаем свои услуги всем, как частным так и общественным органам.

    Спецводсервис : очистка емкостей

     
     
     
  • В компании проектирует, производит Автономнау канализацию.

    В Сервисе вы можете приобрести ЁМКОСТНОЕ И РЕЗЕРВУАРНОЕ ОБОРУДОВАНИЕ, Силосы для хранения сыпучих продуктов, Мешалки складные под еврокуб, Декантерные центрифуги, Линейные колодцы, Плавающая загрузка (ПЗ), Флокуляторы, ОДЪЕМНЫЕ УСТРОЙСТВА И МЕТАЛЛОКОНСТРУКЦИИ Подъемники, ВОДООЧИСТНОЕ ОБОРУДОВАНИЕ материал исполнения : металл ,стеклопластик, ПОДЪЕМНЫЕ УСТРОЙСТВА И МЕТАЛЛОКОНСТРУКЦИИ Шнековые конвейеры, ОЧИСТКА ЛИВНЕВЫХ СТОЧНЫХ ВОД Пескоуловитель, НАСОСНОЕ И КОМПРЕССОРНОЕ ОБОРУДОВАНИЕ (Грунфос, КСБ, Вило, КИТ, Взлёт, ТВП) Аэраторы трубчатые, ВОДОПОДГОТОВКУ Сорбционная фильтрация, а также все для автомойки Автомойки на базе флотации.

    У нас вы найдете Проектирование ЛОС, а также Нефтеуловители, мы можем произвести Насосы для скважин. Бурение неглубоких скважин, Инженерные изыскания, Водоснабжение частного дома.

    Телеметрия скважин — Телеметрия скважин

     
     
     
  • Допустим, вы владелец нового сайта, который имеет приятный современный дизайн, удобную навигацию и полезную для участников информацию. Но на сайт ни кто не заходит. Что делать? Если у вас есть собственный бизнес мы поможем вам создать продающийся сайт. Ясное дело, ни одно реальное или виртуальное предприятие не может продвигаться независимо. Всякой любой компании надлежит подмога в приобретении известности, а во Мировой компьюторной паутине без нее категорически не обойтись из-за бурной конкурентной борьбы.Мы занимаемся разработкой электронной коммерцией.

    Мы всегда готовы запустить полноценный интернет сайт в течение пяти рабочих дней. Не беря в расчет предоставления полных web-сайтов, мы оказываем служба технической поддержки: своевременное продление хостинга и доменного имени, добавление контента на веб-сайт, публикация новостей. Наши услуги дадут возможность вам стать лидером на горизонтах всемирной паутины.

    продвижение сайта в гугл цена. — seo продвижение сайтов в сша

     
     
     
Добавить отзыв