gikami
@gikami
web программист

Как вывести комментарии с ответами по дате без вложений ответа в отдельный массив children WP?

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

Вот иерархия как нужно:
Основной комментарий
--Ответ на комментарий 1
--Ответ на комментарий 2
--Ответ на ответ комментарий 1

Вот как сейчас:
Основной комментарий
--Ответ на ответ комментарий 1
--Ответ на ответ комментарий 2 //Ответы на ответы выводят всегда здесь
...
--Ответ на комментарий 1
--Ответ на комментарий 2 //Отдельно ответ на основной коммент


function comment_view($post_id, $page = 1, $limit = 30){
	
	$offset = ($page - 1) * $limit;

	$comments = get_comments( array (
		'offset' => $offset,
		'number' => $limit,
		'order' => 'DESC',
		'parent' => 0,
		'orderby' => 'comment_date',
		'post_id' => $post_id,
		'status' => 'approve',
	) );

	foreach ( $comments as $comment ) {
		
		$comments_parent = get_comments( array(
				'parent' => $comment->comment_ID, 
				'status' => 'approve', 
				'number' => 10,
				'order' => 'DESC',
				'orderby' => 'comment_date',
				'hierarchical' => true
				)
			);
				
		foreach ( $comments_parent as $comment_parent ) {
			
			$comment_user = ($comment->comment_ID != $comment_parent->comment_parent) ? get_comment( $comment_parent->comment_parent ) : false;

			$comments_parent_array[] = array(
				'parent_user_name' => ($comment_user->comment_author) ? $comment_user->comment_author : false,
				'id' => $comment_parent->comment_ID,
				"user_id" => $comment_parent->user_id,
				"user_name" => $comment_parent->comment_author,
				"user_avatar" => get_avatar_url($comment_parent->user_id, array('size' => 60,'default'=>'mystery')),
				"user_online_now" => (strtotime(date('Y-m-d H:i:s')) - strtotime(bp_get_user_last_activity($comment_parent->user_id))) /60,
				"data_public" => bp_core_time_since($comment_parent->comment_date),
				"content" => $comment_parent->comment_content
				);
		}
		$comments_array[] = array(
			'id' => $comment->comment_ID,
			"user_id" => $comment->user_id,
			"user_name" => $comment->comment_author,
			"user_avatar" => get_avatar_url($comment->user_id, array('size' => 60,'default'=>'mystery')),
			"user_online_now" => (strtotime(date('Y-m-d H:i:s')) - strtotime(bp_get_user_last_activity($comment->user_id))) /60,
			"data_public" => bp_core_time_since($comment->comment_date),
			"content" => $comment->comment_content,
					
			"comments_array" => ($comments_parent_array) ? $comments_parent_array : false
			);
				
		unset($comments_parent_array);
		
	}
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
gikami
@gikami Автор вопроса
web программист
Кажется помогло
arsort($comments_parent); И добавить в массив запроса 'hierarchical' => 'flat'
, но не уверен, правильно ли...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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