Гибкая сортировка записей в WordPress позволяет точнее управлять тем, как контент отображается на сайте. Стандартные инструменты не всегда покрывают все задачи, поэтому часто приходится использовать произвольные поля и сторонние плагины. В этой статье разберём, как настроить сортировку постов по кастомному полю и задать произвольный порядок с помощью плагина Post Types Order.
Сортировка в произвольном порядке с помощью плагина Post Types Order
Плагин Post Types Order позволяет задать произвольный порядок отображения записей в WordPress без необходимости писать код или изменять шаблоны. Это особенно удобно, когда важно вручную управлять последовательностью постов — например, для каталогов, портфолио или лендингов. После настройки вы сможете просто перетаскивать записи в нужном порядке прямо в админ-панели.

Установите плагин и активируйте его. Далее выполните первоначальную настройку.

По умолчанию настройки позволяют изменять порядок для всех стандартных типов записей.
Показать / Спрятать интерфейс — позволяет выбрать, для каких типов записей WordPress можно изменять сортировку.
Минимальный уровень для использования этого плагина — уровень доступа пользователя, который может изменять порядок записей.
Автоматическое применение сортировки — после изменения порядка он автоматически применяется ко всем выводам записей на сайте.
Admin Auto Apply Sort — активирует порядок вывода постов в админке.
Используйте параметр запроса ASC / DESC — применяет порядок сортировки, указанный в запросе (по возрастанию или по убыванию).
Перетаскивание архивов — включает возможность изменения порядка записей на странице архивов в админке.
Следующая / предыдущая страница — применяет сортировку при использовании пагинации.
После сохранения настроек можно приступать к сортировке. Перейдите в раздел админки: Записи > Изменить порядок.
Откроется список ваших записей. С помощью мыши меняйте их местами, формируя нужную последовательность.
Сохраните новый порядок кнопкой «Обновить» и проверьте результат.
Сортировка по произвольному полю (post_meta)
Сортировка записей в WordPress по произвольному полю (post meta) позволяет управлять выводом контента на основе дополнительных параметров — например, цены, рейтинга, даты события или приоритета.
Предположим, на сайте есть тип записи — «Билеты» (ticket), у которого есть произвольное поле price. Чтобы отсортировать вывод билетов по цене используем класс WP_Query.
<?php
$args = array(
'post_type' => 'ticket',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC' // ASC — по возрастанию, DESC — по убыванию
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
?>
<h2><?php the_title(); ?></h2>
<p>Цена: <?php echo get_post_meta(get_the_ID(), 'price', true); ?></p>
<?php
}
wp_reset_postdata();
}За сортировку по цене отвечают два параметра запроса: meta_key со значением price и orderby=meta_value_num.
Для сортировки по числовому значению в параметре
orderbyиспользуетсяmeta_value_num, иначе сортировка будет некорректной (например, 100 < 20 при строковом сравнении).
Изменение основного запроса
Если нужно изменить порядок записей на сайте глобально (например, на главной странице или в архиве), используйте хук pre_get_posts.
function sort_ticket_by_meta($query) {
if (!is_admin() && $query->is_main_query() && is_home() && $query->get('post_type') === 'ticket') {
$query->set('meta_key', 'price');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'ASC');
}
}
add_action('pre_get_posts', 'sort_ticket_by_meta');Что делает этот код:
!is_admin()— не применяет сортировку в админкеis_main_query()— изменяем только основной запросis_home()— применяем только к главной странице блога (можно заменить наis_archive(), is_category()и т.д.)$query->get('post_type') === 'ticket'— изменяет запрос только для типа записиticket
Сортировка по произвольному полю в WordPress реализуется через параметры meta_key и orderby в WP_Query или через хук pre_get_posts. Это даёт гибкость в управлении выводом записей и позволяет адаптировать сайт под любые задачи — от интернет-магазинов до сложных контентных проектов.