Поддержка Проблемы и решения Поздние комментарии на 1 странице

  • Доброй ночи, нельзя ли сделать чтобы поздние коммменты отображались на 1 странице сверху. wp_list_comments пробовал и так и так крутить все что получалось это лишь порядок на странице изменить, как только постраничная навигация появляется порядок сбивается. и поздние коммменты на послденей странице.

    поздние комментарии — это свежие

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • 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 и добавить постраничную навигацию то будет то что нужно

    Модератор Юрий

    (@yube)

    Если я правильно понял, то речь идет об этом фрагменте файла 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, либо получить из базы другой, со своими правилами выборки и сортировки, и вернуть его для дальнейшей обработки.

    Юрий, спасибо огромное это то что нужно, я уже и отчаялся что найду решение, все-таки вы постоянно выручаете), еще раз спасибо!

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Тема «Поздние комментарии на 1 странице» закрыта для новых ответов.