Описание posts_orderby
— Filter
Хук posts_orderby позволяет изменять SQL-запрос для сортировки постов в WordPress. Он срабатывает перед выполнением запроса к базе данных и позволяет изменить порядок, в котором посты выводятся на страницах сайта
Примеры использования
Пример сортировки постов по заголовкам:
add_filter('posts_orderby', function($orderby, $query) {
if ($query->is_main_query() && !is_admin()) {
$orderby = 'post_title ASC';
}
return $orderby;
});
В этом примере мы сортируем посты по заголовкам для главного запроса на фронтенде
Пример сортировки постов по дате изменения:
add_filter('posts_orderby', function($orderby, $query) {
if ($query->is_main_query() && !is_admin()) {
$orderby = 'post_modified DESC';
}
return $orderby;
});
Здесь мы изменяем порядок сортировки постов на основании даты их последнего изменения
Пример добавления пользовательского поля для сортировки:
add_filter('posts_orderby', function($orderby, $query) {
if ($query->is_main_query() && !is_admin()) {
global $wpdb;
$orderby = 'CAST($wpdb->postmeta.meta_value AS UNSIGNED) ASC';
}
return $orderby;
}, 10, 2);
В этом примере мы сортируем посты на основе пользовательского поля, которое хранится в postmeta
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить порядок вывода постов в запросах WordPress
– Производительность
Изменения могут повлиять на производительность, если сортировка осуществляется по сложным полям или большим объемам данных
– Предупреждения
Следите за тем, чтобы изменения не вызывали конфликты с другими плагинами или темами
Альтернативы
Тип: action
Этот хук позволяет изменять параметры запроса перед его выполнением, включая сортировку
Используйте его, если необходимо не только изменять порядок, но и другие параметры запроса