Описание posts_where_request
— Filter
Хук posts_where_request позволяет изменять часть SQL-запроса, который отвечает за выборку постов в WordPress. Он срабатывает перед выполнением запроса к базе данных для получения постов и позволяет модифицировать условия выборки, что может быть полезно для создания пользовательских фильтров или ограничения отображаемых постов.
Примеры использования
Пример добавления условия для выборки только постов определенного автора:
add_filter('posts_where_request', function($where, $query) {
if ($query->get('author')) {
$where .= ' AND post_author = ' . intval($query->get('author'));
}
return $where;
});
В этом примере мы добавляем условие для выборки постов только от определенного автора, если он указан в запросе.
Пример ограничения выборки постов по дате:
add_filter('posts_where_request', function($where, $query) {
$date_query = $query->get('date_query');
if (!empty($date_query)) {
$where .= ' AND post_date >= ' . esc_sql($date_query[0]['after']);
}
return $where;
});
Здесь мы проверяем наличие параметра date_query и добавляем условие для выборки постов, опубликованных после определенной даты.
Пример добавления кастомного поля в условие выборки постов:
add_filter('posts_where_request', function($where, $query) {
global $wpdb;
$where .= ' AND EXISTS (SELECT 1 FROM ' . $wpdb->postmeta . ' WHERE post_id = ID AND meta_key = 'custom_key' AND meta_value = 'custom_value')';
return $where;
});
В этом примере мы добавляем условие, чтобы выбрать только те посты, у которых есть определенное значение кастомного поля.
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить условия выборки постов в WP_Query, особенно если требуется фильтрация по специфическим критериям.
– Производительность
Будьте внимательны при добавлении сложных условий, так как это может негативно сказаться на производительности запросов к базе данных.
– Предупреждения
Убедитесь, что добавляемые условия не конфликтуют с другими параметрами запроса или плагинами, которые могут изменять выборку.
Альтернативы
Тип: action
Этот хук позволяет изменять параметры WP_Query перед выполнением запроса, что дает более широкий контроль над выборкой постов.
Используйте его, если нужно изменить параметры запроса на более ранней стадии, чем в posts_where_request.