Описание posts_pre_query
— Action
Хук posts_pre_query позволяет изменять параметры запроса постов перед его выполнением. Он срабатывает в момент, когда WordPress готовит запрос к базе данных для получения постов, что дает возможность модифицировать различные параметры запроса перед его выполнением
Примеры использования
Пример добавления пользовательского поля в запрос постов:
add_action('posts_pre_query', function($query) {
if (!is_admin() && $query->is_main_query()) {
$query->set('meta_key', 'custom_field');
$query->set('meta_value', 'value');
}
});
В этом примере мы добавляем условие для запроса, чтобы он искал посты с определенным пользовательским полем
Пример изменения количества постов на главной странице:
add_action('posts_pre_query', function($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('posts_per_page', 5);
}
});
Здесь мы устанавливаем количество постов, выводимых на главной странице, равным 5
Пример исключения определенных категорий из запроса:
add_action('posts_pre_query', function($query) {
if ($query->is_category() && $query->is_main_query()) {
$query->set('category__not_in', array(1, 2));
}
});
В данном примере мы исключаем категории с ID 1 и 2 из запроса
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить параметры запроса постов перед его выполнением, особенно если это касается главного запроса на странице
– Производительность
Хук может влиять на производительность при использовании сложных условий, так как он выполняется перед каждым запросом постов
– Предупреждения
Будьте осторожны, чтобы не нарушить логику запроса, чтобы не привести к непредсказуемым результатам
Альтернативы
Тип: action
Этот хук позволяет изменять параметры запроса постов до его выполнения и является более общим
Используйте pre_get_posts, если вам нужно изменить запрос в более ранней стадии, когда он еще не подготовлен