@aftar

Как отфильтровать комментарии по годам и вывести кнопки с кол-ом ком-ев за год?

Добрый день!
Подскажите плиз как реализовать данную тему.
Нужно отфильтровать комментариев по годам, вывести кнопки с их количеством.
И соответственно по клику выводить комментарии за этот год.

Сильно не ругайте, это первый сайт на WP)

5fb4dfc49c11b812138829.png

comments.php
<?php if ( post_password_required() ) { return; } ?>

					<?php if ( have_comments() ) : ?>

					<div class="reviews__main-items">
						<?php if( function_exists('mytheme_comment') ) {

							// как статически выводить за год
							$args = array(
					         'orderby' => 'date',
					         'status' => 'approve',
					         'order' => 'DESC',
					         'date_query' => array(
					                array(
					                'year' => '2019',
					                  )
					               )
					            );

							$comments = get_comments($args);

							// Формируем вывод списка полученных комментариев
							wp_list_comments(array(
								'style'         => 'div',
								'callback'      => 'mytheme_comment',
								'type'          => 'all',
								'reverse_top_level' => true,
							), $comments);

						} ?>
					</div>

					<?php else: ?>
						<p class="comments-title">Пока нет комментариев. Будь первым!</p>		
					<?php endif; ?>

					<?php paginate_comments_links(); ?>


functions.php
// шаблон вывода комментариев
function mytheme_comment($comment, $args, $depth){
    $GLOBALS['comment'] = $comment; ?>
		<div class="reviews__item" <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
			
		<div class="reviews__item-person">
	    	<?php printf(__('<div class="reviews__item-person-name">%s</div> '), get_comment_author_link()) ?>
	    	<?php printf(__('<p class="reviews__item-person-date">%s</p> '),  get_comment_date()) ?>
		</div>
		<div class="reviews__item-descr">
			<p><?php comment_text() ?></p> 
		</div>
 	<?php 
}


Заранее спасибо!
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Не думаю, что это возможно реализовать одним запросом и скорее всего для каждого года вам нужно делать собственный запрос. В этом случае общая логика будет выглядеть следующим образом:

$commentYear = (int) '2014'; // первый год комментариев

// запускаем цикл до текущего года
while ( $commentYear <= date('Y') ) {
	
	$comments = get_comments( array( 
		'orderby' => 'date',
		'status' => 'approve',
		'order' => 'DESC',
		'date_query' => array(
			array(
				'year' => $commentYear
			)
		)
	) );

	if ( $comments ) {
		// пишем вывод
	}

	$commentYear++;
}


Тут мы просто устанавливаем стартовый год и в цикле получаем все до текущего включительно

Скорее всего ваши кнопки это совсем не кнопки, а просто табы и при клике переключают контентные блоки с комментариями. Теперь вам достаточно найти любой удобный вам скрипт с табами и собрать две переменные - с кнопками и с контентом и вывести их
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы