Как сделать сортировку в wordpress

Обновлено: 03.07.2024

В связи с тем, что в последнее время у меня катастрофически не хватает времени, то данная статья будет небольшой. Это связано с тем, что я активно начал изучать XML и XSLT, в результате чего накопилось очень много работы, которую нужно выполнить. Все это способствовало тому, что практически не остается времени на написание статей. Если быть точным, то на написание одной статьи уходит порядка 4-х часов. Это с учетом того, что я владею слепым десятипальцевым методом и печатаю со скоростью речи. Как видите, как ни крути, а написание статей занимает очень много времени…

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

Сортировка рубрик в WordPress. Как исключить рубрики из меню WordPress. Как узнать ID рубрик

Пример работы My Category Order

Для того чтобы изменить расположение элементов, достаточно просто перетянуть мышкой нужный вам элемент в соответствующую позицию, после чего сохранить результат. Далее нам нужно подключить специальный виждет, который будет выводить отсортированные рубрики. Данный виджет станет автоматически доступен сразу после активации плагина My Category Order.

Для подключения виджета, переходим в Меню – Внешний вид – Виджеты и заменяем стандартный виджет рубрик на виджет My Category Order. После этого все рубрики на сайте будут отсортированы в том порядке, в котором вы указали в Меню – Записи – My Category Order.

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

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

После завершения настройки виджета у вас должно получиться примерно следующее (на примере рубрик автомобильного сайта).

Теперь давайте рассмотрим, как можно сортировать статические страницы в WordPress. Сортировку ссылок мы рассматривать не будем, так как они абсолютно ничем не отличаются от сортировки рубрик. Вся процедура идентична той, которая описана чуть выше.

Сортировка страниц в WordPress. Плагин My Page Order

Вся процедура сортировки и вывода отсортированных страниц такая же, как и при сортировке рубрик. Проблема лишь заключается в том, что обычно страницы выводятся не при помощи виджета, а посредством шаблона. В связи с этим вам потребуется заменить стандартный код вывода списка страниц на код вызова списка My Page Order.

Делается это очень просто. Для этого открываем нужный файл шаблона (Установка и редактирование темы WordPress) и ищем так код:

Обычно данный код размещается в файле header.php. Далее заменяем этот код на следующий.

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

Как я уже говорил, в силу того, что ссылками практически никто не пользуется, то рассматривать способ их сортировки мы не будем. Скажу только, что сделать это можно при помощи плагина My Link Order. Как вы уже могли заметить, принцип у них один и тот же, поэтому никаких проблем с использованием возникнуть не должно.

На этом данная статья подошла к концу и я ухожу обучаться дальше:) Следующий материал ждите примерно через неделю. Свои вопросы и пожелания можете оставить чуть ниже в комментариях.

Сортировка записей по произвольному полю дата и время в WordPress

В статье Вывод записей с помощью WP_Query<> я уже показывал, как можно выводить записи по различным параметрам и как использовать простую сортировку постов. Недавно возникла задача вывода записей с доп.полем типа Дата и время и сортировка по нему. Про доп. поля в WordPress можно почитать в этой статье.

Список записей не что иное, как афиша мероприятий. Поэтому ещё одним условием было не выводить мероприятия, которые уже прошли, т.е. те, у которых дата установлена раньше текущего дня.

Собственно к записям было добавлено поле Дата и время через плагин ACF(Advanced Custom Fields). А вот код, которым получилось осуществить задуманное:

Чтобы не выводить записи до текущего дня в значении meta_query опять же указываем key — это имя нашего поля, в value текущие дату и время и в compare знаки больше и равно. Что означает выводить только те записи, у которых дата и время больше или равны текущей дате. И в поле type указываем, что это поле дата и время.

Полный код примера:

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:


Пример вывода подрубрик с изображением на странице текущей рубрики WordPress. Код можно использовать и для других разделов сайта. Надо только указать ID родительской рубрики. Вывод подрубрик в текущей рубрике






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

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

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

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

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

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

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

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

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

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

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

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

Заключение.

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

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

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

Смена даты публикации – не самый лучший подход для большинства блогов. Таким образом, в данной статье мы рассмотрим второй и третий вариант. Для начала я покажу вам, как написать плагин для применения произвольного порядка вывода записей. Затем мы рассмотрим два плагина из хранилища WordPress, которые мы будем использовать для создания произвольного порядка вывода записей.

Пишем свой плагин для вывода записей

Есть два основных шага, которые необходимы для реализации своего порядка вывода записей:

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

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

Создаем произвольное поле

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

Первый шаг для добавления произвольной мета-панели к бэкэнду – это создание панели и привязка ее к экрану редактирования записей:

Данный фрагмент кода, включенный в файл вашего плагина, позволит создать произвольную мета-панель. Вот как будет выглядеть панель:

custom-sort-box-1

Вы можете заметить функцию обратного вызова ‘jpen_custom_post_order’ в коде. Давайте создадим эту функцию далее и добавим ее в файл нашего плагина. Она будет вносить поле в мета-панель, которую мы создали выше.

Фрагмент кода начинается с задания одноразовых чисел (nonces). Затем мы создаем переменную $current_pos и присваиваем ей значение текущего порядка сортировки записей. Далее идут два элемента p, которые создают видимый контент мета-панели. Затем текущее значение, если оно существует, выводится в поле.

Наконец, нам нужно сохранить пользовательский ввод в базу данных. Мы сделаем это, добавив следующий код к плагину:

Здесь мы сначала проверяем задание одноразовых чисел, после чего выполняем проверку пользовательских полномочий для внесения изменений в запись. Если проверка прошла успешно, метаданные записи обновляются – в них заносится новое значение произвольного порядка вывода записей.

Выводим произвольное поле в панели администратора

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

Чтобы увидеть значение порядка сортировки записей для текущей записи, мы должны открыть эту запись и взглянуть в произвольную мета-панель, добавленную нами к экрану редактирования записей. Это не очень удобно. Давайте добавим значение порядка сортировки на страницу вывода записей в панели администратора, чтобы мы могли быстро увидеть значение, связанное с каждой записью.

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

Затем нам нужно получить значение порядка вывода записей для каждой записи и вывести это значение в новом столбце. Это не так сложно, и мы сделаем это с помощью следующей функции:

Прекрасно. Теперь, если мы посетим список записей блога в панели администратора, мы сможем легко увидеть, каким записям был присвоен новый порядок вывода.

Вот как это будет выглядеть в панели администратора:

list-of-posts-with-position

Способы использования произвольного порядка вывода записей

Есть несколько разных вариантов, как можно применить произвольную сортировку. Вот пара идей:

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

Никаких пределов нет. Если вы нашли применение произвольному порядку вывода записей и знаете, как это реализовать – отлично! Давайте рассмотрим все три идеи, изложенные выше, чтобы понять, как они будут выполняться на практике.

Меняем записи на странице блога на произвольно отсортированный список

Самый простой способ использования произвольного порядка вывода записей – замена стандартного списка записей на странице блога на произвольно отсортированный список. Чтобы сделать это, вы должны поместить следующую функцию в ваш плагин:

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

Создаем курируемый список произвольно отсортированных записей

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

Этот запрос сначала отберет все записи, которые принадлежат к категории с Далее он будет отбирать записи, которые имеют значение произвольного порядка вывода. Наконец, он отсортирует эти записи в нужном порядке.

Данный запрос может быть помещен в произвольный шаблон страницы или добавлен к виджету сайдбара для вывода запрашиваемых записей.

Добавляем отсортированные записи в начало списка записей блога

Еще один вариант реализации сортировки – добавление произвольно отсортированных записей в начало списка записей блога, после чего уже пойдут остальные записи блога, сортируемые в обычном порядке. Сделать это будет сложнее – нам понадобится создать два произвольных запроса с помощью класса WP_Query.

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

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

Вот один из способов, которым мы могли бы объединить два запроса для получения желаемого результата:

Вы можете использовать этот набор запросов, чтобы заменить стандартный запрос для страницы блога. Делается это в три шага:

  1. Создаем файл home.php, копируя Index.php родительской темы.
  2. Помещаем эти запросы вместо базового цикла.
  3. Загружаем новый home.php в корневую директорию дочерней темы.

Теперь при отображении страницы блога будет использоваться новый файл home.php в качестве шаблона страницы.

Плагины для достижения тех же целей

Post Types Order

pto

Post Types Order активен на более чем 400 000 сайтов, постоянно обновляется; разработчик активно решает вопросы, поступающие в поддержку. Плагин имеет рейтинг 4,6 из 5 и собрал более 150 отзывов от пользователей.

Плагин может использоваться для произвольной сортировки записей и типов записей. Чтобы использовать плагин, просто установите и активируйте его, после чего перейдите в раздел Settings > Post Types Order. Далее посетите список записей в панели администратора и просто перетащите записи в требуемый раздел с порядком сортировки. В итоге вы увидите, что записи во фронтэнде вашего сайта были отсортированы в нужном вам порядке.

Order Your Posts Manually

orde

Order Your Posts Manually активен менее чем на 1000 сайтов WordPress. Однако он имеет хороший рейтинг, равный 4,6 из 5, и разработчики решают все запросы, поступающие в поддержку. Плагин действительно стоит рассмотрения.

Чтобы использовать плагин, установите его, активируйте и перейдите в раздел Settings > Order Your Posts Manually. Настройте несколько опций и щелкните Order My Posts. Щелчок по этой кнопке перенесет вас в раздел Tools > Order Your Post Manually и сгенерирует список всех ваших записей. Просто перетащите ваши записи в нужную группу, чтобы упорядочить их, после чего щелкните по Save Changes.

Читайте также: