Я сделал вывод комментариев с перебором данных создав свой массив. При этом столкнулся с проблемами ответов, они добавляются в дочерний массив внутри массива. Другими словами они вложены в коментарии и выводятся отдельно, что приводит к тому, что при выводе списка, ответы вылезают отдельным списком а комменты ниже тоже отдельно.
Как сделать так, чтобы ответы выводились в том же цикле что и комментарии, сортируясь по дате.
Вот иерархия как нужно:
Основной комментарий
--Ответ на комментарий 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);
}