Поддержка → Проблемы и решения → Поздние комментарии на 1 странице
Поздние комментарии на 1 странице
-
Доброй ночи, нельзя ли сделать чтобы поздние коммменты отображались на 1 странице сверху. wp_list_comments пробовал и так и так крутить все что получалось это лишь порядок на странице изменить, как только постраничная навигация появляется порядок сбивается. и поздние коммменты на послденей странице.
поздние комментарии — это свежие
-
renak, попробуйте сделать по этой статье, там все предельно ясно, но если возникнут вопросы, пишите.
Доброй ночи, нельзя ли сделать чтобы поздние коммменты отображались на 1 странице сверху
В настройках комментирования
verkhovod, get_comments имеет обратный порядок а вот сам wp_list_comments как я понял не имеет.
SeVlad, а в настройках меняется только на странице. тоесть выводятся старые комменты но сверху выводятся из старых самые свежие
выводятся старые комменты но сверху выводятся из старых самые свежие
И что тут не соответствует Вашей задаче?
SeVlad, ну смотри объяснить сложно как у меня сейчас, вышлю скриншот.
http://clip2net.com/s/6QYBeK — настройки в вп
http://clip2net.com/s/6QYK0D — 1/2 страниц
http://clip2net.com/s/6QYMuy — 2/2 страницполучается не во всей выборке order by desc а как будто идет order by asc и array_reverse применили на каждой странице.
объяснить сложно как у меня сейчас, вышлю скриншот
Что-то скриншоты не прояснили суть проблемы. 🙁
ну смотри в чем прикол мне нужно чтобы запрос был order by desc
на скриншотах он получается order by asc и в цикле просто массив отсортирован по array_reverse , поэтому получается что. у нас порядок комментериев выводиться — старые на первых страницах (но из за того что в админке ставишь сверху выводились последние комменты он применяет к массиву array_reverse И в итоге мы получаем порядок комментов по order by id asc «но перед циклом вывода — весь массив с комментами для страницы 1 или 2 например он переворачивает используя array_reverse»)
а я хотел сделать чтобы просто напросто был вывод комментов по order by DESC
тоесть не как сейчас на скринах
а страницы местами поменяться. 2 страница на 1 месте , 1 соответственно на 2 и тогда получается прямой порядок ORDER BY ID DESC
но переколопатил весь класс — нет такого, хренатень какая то
именно нету в wp_list_comments.Если интересно, попробуй добавить у себя комментариев 4 шт. сделай ограничение 2шт на страницу с условием (свежие комменты должны быть сверху и на первой странице, старые же на последующих) — тут станет сразу понятно про что я гвоорю
renak, мб я что-то не допонял в хотелках, но по-умолчанию (без правок темы!) комменты будут выводится в обратном хронологическом порядке при настройках: «последняя страница» и «поздние»
то то оно то, но мне поставили задачу чтобы не последняя страница отображалась а 1. т.к. на последней бывает 1 коммент всего.
то то оно то, но мне поставили задачу чтобы не последняя страница отображалась а 1. т.к. на последней бывает 1 коммент всего.
1 = первая?
Первая — это с последним комментом (самым свежим) или с первым (самым старым)?вот смотри где мы сейчас пишем комменты выводятся order by asc
если сюда приписать order by desc и добавить постраничную навигацию то будет то что нужно
Если я правильно понял, то речь идет об этом фрагменте файла comment-template.php:
/** @todo Use API instead of SELECTs. */ if ( $user_ID) { $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND (comment_approved = '1' OR ( user_id = %d AND comment_approved = '0' ) ) ORDER BY comment_date_gmt", $post->ID, $user_ID)); } else if ( empty($comment_author) ) { $comments = get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') ); } else { $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND ( comment_approved = '1' OR ( comment_author = %s AND comment_author_email = %s AND comment_approved = '0' ) ) ORDER BY comment_date_gmt", $post->ID, wp_specialchars_decode($comment_author,ENT_QUOTES), $comment_author_email)); }
Да, тут order by вписан прямым текстом. Ну так и коммент, предваряющий код, говорит сам за себя.
Однако, после него есть строка
$wp_query->comments = apply_filters( 'comments_array', $comments, $post->ID );
А это значит, что повесив обработчик на хук ‘comments_array’, можно либо пересортировать имеющийся массив $comments, либо получить из базы другой, со своими правилами выборки и сортировки, и вернуть его для дальнейшей обработки.
Юрий, спасибо огромное это то что нужно, я уже и отчаялся что найду решение, все-таки вы постоянно выручаете), еще раз спасибо!
- Тема «Поздние комментарии на 1 странице» закрыта для новых ответов.