В крупных проектах на WordPress часто скапливается множество устаревших или неиспользуемых изображений, которые занимают место на сервере и могут попадать в индекс поисковых систем, ухудшая качество сайта и SEO. В этой статье мы разберём, как автоматизировать удаление таких изображений из индекса поисковых систем через протокол IndexNow с примерами кода и рекомендациями.
Что такое устаревшие изображения и почему важно удалить их из индекса
Устаревшими считаются изображения, которые больше не используются на страницах сайта — например, при смене дизайна, удалении записей или замене фото. Если такие изображения остаются индексируемыми, они:
- Могут создавать дублирующий контент и снижать релевантность сайта.
- Занимают лишний трафик при загрузке и увеличивают время сканирования.
- Отнимают место на хостинге и усложняют управление медиа.
Удаление их из индекса помогает поддерживать чистоту сайта и улучшать SEO показатели.
Использование IndexNow для уведомления поисковиков об удалении изображений
IndexNow — современный протокол, позволяющий вебмастерам быстро сообщать поисковым системам об изменениях на сайте: добавлении, обновлении или удалении контента. Отправка URL удалённых изображений с параметром delete ускоряет исключение их из индекса.
Для работы с IndexNow необязательно использовать плагины, но для удобства и автоматизации в WordPress можно создать кастомное решение, которое будет отслеживать удаление медиа и отправлять соответствующие запросы.
Как сформировать запрос на удаление URL изображения через IndexNow
Формат запроса основан на отправке POST-запроса на URL поисковой системы с массивом URL, которые нужно удалить. Пример тела запроса JSON:
{
"host": "https://example.com",
"key": "ваш_ключ_IndexNow",
"urlList": ["https://example.com/wp-content/uploads/2023/01/old-image.jpg"]
}
Поисковая система обрабатывает этот запрос и удаляет указанные URL из своего индекса.
Автоматизация удаления устаревших изображений в WordPress с помощью IndexNow
Для интеграции отправки уведомлений в WordPress можно использовать хук, который срабатывает при удалении медиафайла. Ниже пример функции, которая отправляет URL удалённого изображения в IndexNow:
function indexnowsu_send_image_delete_indexnow($post_id) {
$post = get_post($post_id);
if ($post->post_type !== 'attachment') {
return;
}
$image_url = wp_get_attachment_url($post_id);
if (!$image_url) {
return;
}
$indexnow_key = 'ваш_ключ_IndexNow';
$host = get_site_url();
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = json_encode([
'host' => $host,
'key' => $indexnow_key,
'urlList' => [$image_url]
]);
$response = wp_remote_post($endpoint, [
'headers' => ['Content-Type' => 'application/json'],
'body' => $payload,
'timeout' => 10
]);
if (is_wp_error($response)) {
error_log('IndexNow: ошибка отправки удаления изображения - ' . $response->get_error_message());
}
}
add_action('delete_attachment', 'indexnowsu_send_image_delete_indexnow');
Эта функция срабатывает при удалении любого вложения (изображения) и отправляет запрос на удаление URL в IndexNow.
Расширение: удаление неиспользуемых изображений из медиатеки
Если хочется не только уведомлять поисковики, но и очищать сервер, можно периодически сканировать медиатеку и искать неиспользуемые файлы. Для этого:
- Получаем список всех вложений через
get_posts(['post_type' => 'attachment', 'numberposts' => -1]). - Проверяем, используются ли они в записях или страницах (поиск по контенту).
- Удаляем неиспользуемые через
wp_delete_attachment()и отправляем IndexNow уведомление.
Пример упрощённой функции для поиска неиспользуемых медиафайлов:
function indexnowsu_cleanup_unused_images() {
$attachments = get_posts([
'post_type' => 'attachment',
'numberposts' => -1,
]);
foreach ($attachments as $attachment) {
$url = wp_get_attachment_url($attachment->ID);
$content_found = false;
// Поиск использования в постах
$posts = get_posts(['s' => basename($url), 'numberposts' => 1]);
if ($posts) {
$content_found = true;
}
if (!$content_found) {
wp_delete_attachment($attachment->ID, true);
// Здесь можно вызвать функцию отправки IndexNow удаления
indexnowsu_send_image_delete_indexnow($attachment->ID);
}
}
}
Для автоматизации можно запускать такую функцию с помощью WP-Cron или системного cron.
Рекомендации по работе с IndexNow и изображениями
- Всегда регистрируйте и храните ваш ключ IndexNow, чтобы не потерять доступ.
- Отправляйте запросы пакетами — можно отправлять несколько URL в одном запросе для оптимизации.
- Отслеживайте ответы API — в случае ошибок логируйте их для отладки.
- Комбинируйте автоматическое удаление изображений с периодическим сканированием медиатеки.
- Используйте плагины, если хотите более расширенный функционал, например, Clearfy Pro оптимизирует работу с медиа и SEO.
Пример интеграции с WPShop плагином для SEO
Если вы используете комплексные решения от WPShop, например, Clearfy Pro, то можно комбинировать автоматическую очистку медиа и улучшение SEO через готовые инструменты оптимизации.
Выводы
Удаление устаревших изображений из индекса поисковиков — важная задача для поддержания качества сайта. С помощью протокола IndexNow и кастомных функций в WordPress можно быстро и эффективно уведомлять поисковики об удалении таких URL. Автоматизация этого процесса сэкономит время и поддержит SEO на высоком уровне.