Описание posts_results
— Filter
Хук posts_results позволяет изменить результаты запроса постов в WordPress. Он срабатывает после выполнения запроса к базе данных для получения постов и позволяет модифицировать массив результатов перед их выводом на экран
Примеры использования
Пример удаления определенного поста из результатов:
add_filter('posts_results', function($posts, $query) {
foreach ($posts as $key => $post) {
if ($post->ID == 42) { // Удаляем пост с ID 42
unset($posts[$key]);
}
}
return $posts;
});
В этом примере мы удаляем пост с ID 42 из массива результатов
Пример изменения заголовка поста:
add_filter('posts_results', function($posts, $query) {
foreach ($posts as $post) {
if ($post->ID == 10) { // Изменяем заголовок поста с ID 10
$post->post_title = 'Новый заголовок';
}
}
return $posts;
});
Здесь мы изменяем заголовок поста с ID 10 на ‘Новый заголовок’
Пример добавления нового поста в результаты:
add_filter('posts_results', function($posts, $query) {
$new_post = new stdClass();
$new_post->ID = 999;
$new_post->post_title = 'Добавленный пост';
$new_post->post_content = 'Содержимое нового поста';
$posts[] = $new_post;
return $posts;
});
В этом примере мы добавляем новый пост в массив результатов
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо модифицировать результаты запроса постов перед их выводом
– Производительность
Изменения могут повлиять на производительность, особенно если производится сложная логика обработки, поэтому старайтесь делать модификации эффективными
– Предупреждения
Будьте осторожны с изменением структуры объектов постов, так как это может вызвать ошибки в других частях вашего кода
Альтернативы
Тип: filter
Этот хук позволяет изменять массив постов перед их выводом в цикле
Используйте его, если нужно изменить посты в самом цикле вывода, а не после выполнения запроса