WordPress сортировка записей по дате изменения через URL

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

Вообще на написание этого поста, меня почему-то подтолкнула моя старая запись — Решение partition problem на PHP, обязательно почитайте ее, она очень познавательная  🙂 .

WordPress сортировка

Как вы уже поняли речь пойдет о WordPress и его стандартных блоговых записях. Реализация и работа сортировки довольно примитивная и будет представлять из себя просто ссылку, при нажатии на которую, будет происходить изменение WordPress запроса, и недавно обновленные записи будут отображаться в порядке убывания.

Для начала, добавьте где-нибудь в своем шаблоне ссылку вида — http://example.com/?sortby=modified или создайте ее с помощью add_query_arg. В любом случае нас будет интересовать, часть ссылки со значением (sortby=modified) в которой как раз все волшебство и происходит. Затем, в файл functions.php необходимо добавить параметр запроса WP_Query используя query_vars фильтр. Весь необходимый код, который должен быть в  functions.php представлен ниже:

Как вы можете видеть, в коде используется функция pre_get_posts, чтобы изменить WordPress запрос по умолчанию, который возвращает все посты по дате создания. Внутри, я использую get_query_var, чтобы получить URL-адрес и убеждаюсь/проверяю, что значение обновлено и пользователь видит нужные посты в отсортированном порядке. Условие также гарантирует, что изменения WP Query предназначены только для основного запроса и не для админ-панели. Если все условия истины, код $query->set( 'orderby', 'modified' ); будет сортировать записи по последней дате изменения. 

Подписаться на новые статьи