В процессе работы с WordPress сайты накапливают большое количество медиафайлов: изображения, видео, документы. Со временем часть из них становится неактуальной или вовсе не используется, но продолжает занимать место на сервере. В этой статье мы подробно рассмотрим, как автоматизировать удаление старых и неиспользуемых медиафайлов в WordPress, чтобы экономить место и поддерживать порядок в библиотеке.
Почему важно удалять старые медиафайлы в WordPress
Медиафайлы занимают значительную часть дискового пространства на хостинге, особенно на сайтах с большим количеством публикаций и загрузок. Неиспользуемые или устаревшие файлы:
- Увеличивают нагрузку на бэкапы и время их создания;
- Могут замедлять работу сайта при сканировании библиотеки;
- Затрудняют поиск нужных медиа и управление ими.
Регулярное удаление таких файлов помогает поддерживать оптимальную производительность и упрощает администрирование.
Как определить старые и неиспользуемые медиафайлы
Для начала нужно понять, какие именно медиафайлы можно считать старыми или неиспользуемыми. Вот несколько критериев:
- Возраст файла — например, файлы, которые не использовались в публикациях более 1 года;
- Отсутствие привязки — файлы, которые не прикреплены к постам, страницам или другим типам записей;
- Отсутствие ссылок — файлы, на которые нет внутренних ссылок в контенте сайта.
В зависимости от сайта и целей, можно выбрать один или несколько критериев.
Автоматизация удаления с помощью плагинов
Плагин Media Cleaner
Один из самых популярных инструментов для очистки библиотеки — Media Cleaner. Он сканирует медиафайлы и находит неиспользуемые, позволяя их удалить в пару кликов.
Особенности:
- Сканирование на основе ссылок в базе данных и контенте;
- Поддержка различных типов записей и плагинов, включая WooCommerce;
- Возможность создания резервных копий перед удалением.
Для сайтов с большим количеством медиа и сложной структурой рекомендуется использовать Pro-версию, которая умеет работать с расширенными типами контента.
Плагин WP-Optimize
Кроме оптимизации базы данных, WP-Optimize имеет функцию очистки медиа, которая помогает удалять неиспользуемые изображения. Его удобно использовать, если вы уже применяете его для других оптимизаций.
Автоматическое удаление с помощью кода
Если вы предпочитаете кастомные решения и хотите полностью контролировать процесс, можно реализовать автоматическое удаление старых медиа с помощью PHP и хуков WordPress.
Ниже пример функции, которая удаляет медиафайлы, не прикрепленные к записям и загруженные более 180 дней назад:
function wpcatalog_delete_old_unattached_media() {
$args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => -1,
'date_query' => array(
array(
'column' => 'post_date',
'before' => '180 days ago',
),
),
'meta_query' => array(
array(
'key' => '_wp_attachment_context',
'compare' => 'NOT EXISTS',
),
),
'post_parent' => 0,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$attachment_id = get_the_ID();
// Удаляем вложение вместе с файлами
wp_delete_attachment( $attachment_id, true );
}
wp_reset_postdata();
}
}
// Запускаем функцию по крону раз в неделю
if ( ! wp_next_scheduled( 'wpcatalog_weekly_media_cleanup' ) ) {
wp_schedule_event( time(), 'weekly', 'wpcatalog_weekly_media_cleanup' );
}
add_action( 'wpcatalog_weekly_media_cleanup', 'wpcatalog_delete_old_unattached_media' );Объяснение кода:
- Запрос выбирает все вложения, загруженные более 180 дней назад, которые не привязаны к каким-либо записям (
post_parent = 0); - Для каждого такого вложения вызывается
wp_delete_attachmentс параметромtrue, чтобы удалить файлы из файловой системы; - Функция запускается раз в неделю через WordPress Cron.
Вы можете модифицировать этот код, например, добавить проверку на использование файлов в контенте, или менять период удаления.
Как проверить, что медиа действительно не используются
Удаление файлов без проверки может привести к потере важных данных. Чтобы убедиться в безопасности удаления:
- Используйте плагины, которые умеют искать ссылки на медиа в базе и контенте;
- Перед массовым удалением сделайте полный бэкап сайта и базы данных;
- Проводите удаление сначала на тестовом сайте;
- Можно добавить в код дополнительную проверку, например, искать URL файла в тексте постов.
Дополнительные рекомендации и плагины для оптимизации медиа
Для комплексного управления медиа рекомендуем обратить внимание на следующие инструменты:
- Clearfy Pro — плагин для оптимизации и очистки WordPress, включая работу с медиа.
- WPRemark — для улучшения работы с комментариями и медиа.
Используйте эти инструменты вместе с кастомными решениями для лучшего результата.