Чтобы сделать сортировку по мета-полю (мета-записи) в WordPress с использованием хука pre_get_posts
, можно добавить кастомный код в файл функций темы (например, functions.php
). При этом нужно указать, что сортировка должна быть по значению мета-поля, которое является числом (например, от большего к меньшему).
Пример кода:
add_action('pre_get_posts', 'custom_order_by_meta_value');
function custom_order_by_meta_value($query) {
// Проверяем, если это основной запрос и не админка
if (!is_admin() && $query->is_main_query()) {
// Проверяем нужный тип постов (например, 'post')
if ($query->is_post_type_archive('your_post_type')) {
// Указываем мета-ключ для сортировки
$meta_key = 'your_meta_key';
// Задаем сортировку по мета-полю (число) от большего к меньшему
$query->set('meta_key', $meta_key);
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
}
}
Объяснение:
meta_key
— это ключ мета-поля, по которому вы хотите выполнить сортировку.orderby
— указывает, что сортировка будет выполнена по числовому значению мета-поля (meta_value_num
).order
— указывает, что сортировка должна быть в порядке убывания (DESC
).
Если вы используете какой-то другой тип постов или условия для запроса (например, категория, метка), вы можете адаптировать условие внутри функции в зависимости от своих нужд.
Этот код будет работать для основного запроса (main query
) на странице архивов определенного типа постов (your_post_type
).