Поддержка Проблемы и решения Обратная хронология "убила" навигацию

  • После установки в блоге обратной хронологи отображения записей (ранняя запись вверху, нижняя внизу)
    посредством добавления в файл index кода:

    <?php global $query_string;
    query_posts($query_string . "&order=ASC");?>

    записи стали отображаться как надо в обратной хронологии.

    НО перепутались функции ссылок «предыдущая запись» и «следующая запись» при просмотре блога со стартовой страницы, а также по тегам и рубрикам.

    Иными словами «предыдущая запись» показывают более поздние записи, а «следующая запись» показывает более ранние записи. А нужно, следуя логике, наоборот.

    ВАЖНО: На странице самой записи ссылка «предыдущие запись» и «следующая запись» работают правильно! Именно поэтому я долго не замечал этой ошибки. Заметил, когда стал просматривать записи со стартовой, а также по тегам и рубрикам.

    Тема: Syntax by Automattic.

    Что и где надобно поменять в коде?
    Благодарю.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • а $query_string везде добавлено?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    query_posts() не рекомендуется использовать, лучше обойтись без этой функции.

    Можно добавить фрагмент в functions.php активной темы:

    function switch_to_ascending_order( $query ) {
    	if ( is_admin() || ! $query->is_main_query() ) {
    		return;
    	}
    
    	$query->set( 'order', 'ASC' );
    }
    add_action( 'pre_get_posts', 'switch_to_ascending_order' );

    Или воспользоваться плагином Default Sort Ascend.

    Если эти варианты не помогут — можно создать дочернюю тему и в ней поменять местами ссылки навигации.

    а $query_string везде добавлено?

    Только в файле index, Об этом я уже писал. Там, где я брал рекомендацию не говорилось, что надо указывать в других файлах.

    query_posts() не рекомендуется использовать, лучше обойтись без этой функции.Можно добавить фрагмент в functions.php активной темы:

    Сделал все как Вы сказали. Записи также сделались в обратном порядке, но проблема осталась. Не повлияла ваша функция на «предыдущие запись» и «следующая запись». Они по прежнему перевернуты.

    Все так трагично? Никто не пробовал перевернуть хронологию? Неужели никто не сталкивался с подобным?

    Иными словами «предыдущая запись» показывают более поздние записи, а «следующая запись» показывает более ранние записи. А нужно, следуя логике, наоборот.

    На самом деле так и должно быть. Подумайте на досуге, как бы работали эти кнопки, если бы вы поставили сортировку с А->Я

    А Вас, я так понимаю, не устраивает название ссылок, нужно их просто заменить в шаблоне.
    Ищите в шаблоне вызов таких функций
    next_posts_link()
    previous_posts_link()

    Ищите в шаблоне вызов таких функций

    Спасибо за наводку. Разобрался.
    Решение.

    <?php if ( get_next_posts_link() ) : ?>
    		<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'syntax' ) ); ?></div>
    		<?php endif; ?>
    
    		<?php if ( get_previous_posts_link() ) : ?>
    		<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'syntax' ) ); ?></div>
    		<?php endif; ?>

    Заменить на

    <?php if ( get_next_posts_link() ) : ?>
    		<div class="nav-next"><?php next_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'syntax' ) ); ?></div>
    		<?php endif; ?>
    
    		<?php if ( get_previous_posts_link() ) : ?>
    		<div class="nav-previous"><?php previous_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'syntax' ) ); ?></div>
    		<?php endif; ?>
Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Обратная хронология "убила" навигацию» закрыта для новых ответов.