Описание posts_where_paged
— Filter
Хук posts_where_paged позволяет изменять условие выборки постов на страницах с пагинацией. Он срабатывает при формировании SQL-запроса, когда WordPress получает список постов для отображения на страницах с разбивкой на страницы, и позволяет настроить условия выборки постов
Примеры использования
Пример добавления кастомного условия для выборки постов только после определенной даты:
add_filter('posts_where_paged', function($where) {
$where .= ' AND post_date > "2023-01-01"';
return $where;
});
В этом примере мы добавляем условие, чтобы выбирать только посты, опубликованные после 1 января 2023 года.
Пример фильтрации постов по категории:
add_filter('posts_where_paged', function($where) {
global $wpdb;
$category_id = 2;
$where .= $wpdb->prepare(' AND ID IN (SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d)', $category_id);
return $where;
});
Здесь мы добавляем фильтрацию, чтобы выбирать посты, относящиеся к категории с ID 2.
Пример исключения определенных постов из выборки:
add_filter('posts_where_paged', function($where) {
$exclude_ids = '1, 2, 3';
$where .= ' AND ID NOT IN (' . $exclude_ids . ')';
return $where;
});
В этом примере мы исключаем посты с ID 1, 2 и 3 из выборки.
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить условия выборки постов на страницах с пагинацией
– Производительность
Будьте осторожны с добавлением сложных условий, так как это может повлиять на производительность запросов к базе данных
– Предупреждения
Убедитесь, что ваши изменения не конфликтуют с другими фильтрами или хуками, которые могут изменять выборку постов
Альтернативы
Тип: action
Этот хук позволяет изменять параметры запроса перед его выполнением, включая условия выборки постов
Используйте его, если хотите более гибко настроить выборку постов, включая пагинацию и другие параметры