Как сортировать посты категории в WordPress

Ромчик
0

wordpressДоброго времени суток. Как вы знаете посты в WordPress сортируются по дате публикации, сначала последние опубликованные. Но иногда необходимо сортировать посты по другому полю, например, по автору или сортировать произвольно. И для этого в WordPress, есть специальная функция. Давайте рассмотрим ее подробней.

В WordPress есть специальная функция query_posts(), которая определяет какие посты будут показаны в базовом цикле WordPress.

Функция WordPress – query_posts()

Функция query_posts() изменяет основной запрос. Поэтому использовать данную функцию необходимо осторожно. И в конце цикла обязательно используйте функцию wp_reset_query(), которая сбрасывает параметры запроса на начальные.

Функция query_posts() принимает параметры как в виде массива, так и в виде строки.

Например, мы хотим вывести посты из категории с ID=2, тогда наш код:

    query_posts('cat=2'); 

Более подробно о функции query_posts можно прочитать на официальном сайте WordPress

Теперь немного практики.

Сортировка постов категории в WordPress

Потребовалось мне сделать сортировку постов категории по дате публикации в обратном порядке. Теперь зная о функции query_posts() сделать это легко. Открываем файл category.php (который отвечает за вывод постов категории) и перед базовым циклом вставить query_posts(‘order=ASC’). Не забываем после цикла вставить wp_reset_query().


<?php query_posts('order=ASC' );?>
<?php while (have_posts()) : the_post(); ?>
    ...
<?php endwhile ?>
<?php wp_reset_query()?>

Проверяем. Вот не задача. Сортировка по дате есть, но выводятся все посты (даже не относящиеся к данной категории). Получилось то, о чем я писал выше «использовать данную функцию необходимо осторожно». Мы полностью перезаписали основной запрос. Давайте исправим ситуацию.

Если вы хотите сохранить параметры запроса, которые были использованы для создания текущего запроса, то необходимо использовать глобальную переменную $query_string. Отлично, таким образом мы можем сохранить параметры первоначального запроса, а затем изменить запрос. В нашем случае к первоначальному запросу добавить сортировку по дате публикации.

<?php query_posts( $query_string . '&amp;order=ASC' );?>
<?php while (have_posts()) : the_post(); ?>
    ...
<?php endwhile;?>
<?php wp_reset_query()?>

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

Заключение.

Для изменение основного запроса используем функцию query_posts() WordPress. Но данную функцию необходимо использовать с большой осторожностью, т.к. она перезаписывает основной запрос. Если мы используем функцию query_posts(), то в конце цикла обязательно сбрасываем параметры запроса на первоначальные с помощью функции wp_reset_query(). Если нам необходимо сохранить параметры первоначального запроса, то используем глобальную переменную $query_string.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2020 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика