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

Гибкая сортировка записей в 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. Это даёт гибкость в управлении выводом записей и позволяет адаптировать сайт под любые задачи — от интернет-магазинов до сложных контентных проектов.