В процессе работы с WordPress накапливается большое количество медиа файлов, многие из которых со временем перестают использоваться на сайте. Эти «мусорные» файлы занимают место на сервере, замедляют резервное копирование и могут привести к путанице при работе с медиа библиотекой. В этой статье расскажем, как найти и удалить неиспользуемые медиа файлы в WordPress, а также рассмотрим несколько эффективных плагинов и пример кода для автоматизации задачи.
Почему важно удалять неиспользуемые медиа файлы
Большое количество неиспользуемых изображений и других медиа ресурсов негативно сказывается на производительности сайта. Они занимают дисковое пространство, увеличивают время бэкапа и усложняют управление контентом. Особенно это актуально для сайтов с большим объемом контента, интернет-магазинов и блогов, где регулярно добавляются и удаляются материалы.
Удаление таких файлов помогает:
- Освободить место на сервере.
- Ускорить загрузку сайта и работу панели администратора.
- Упростить управление медиа библиотекой.
- Снизить нагрузку на резервное копирование.
Как найти неиспользуемые медиа файлы: методы и инструменты
Самый простой способ — использовать готовые плагины, которые анализируют контент и выявляют медиа файлы, не прикреплённые к ни одной записи, странице или виджету. Однако бывают случаи, когда автоматический поиск не идеален, и нужно проверять вручную или с помощью кода.
Плагины для удаления неиспользуемых медиа файлов
1. Clearfy Pro — универсальный плагин для оптимизации WordPress с функцией очистки мусора, включая медиа. Позволяет безопасно удалять неиспользуемые файлы, делая резервные копии перед удалением.
2. Media Cleaner — популярный плагин, который сканирует библиотеку, посты, страницы и виджеты на наличие ссылок на медиа и показывает список «мусорных» файлов для удаления.
3. WP-Optimize — плагин для комплексной оптимизации базы данных и медиа, включая поиск и удаление неиспользуемых изображений.
Поиск неиспользуемых медиа с помощью пользовательского кода
Для опытных разработчиков полезен подход с использованием WP_Query и прямых запросов к базе данных, чтобы найти файлы, не используемые в контенте.
function wpbox_find_unused_media() {
global $wpdb;
// Получаем все ID вложений
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $id) {
$used = false;
// Проверяем, используется ли вложение в каком-либо посте
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like(wp_get_attachment_url($id)) . '%'
));
if ($count == 0) {
// Проверяем, прикреплено ли вложение к посту
$parent = get_post_field('post_parent', $id);
if (!$parent) {
$unused[] = $id;
}
}
}
return $unused;
}Этот код ищет вложения без привязки к постам и тех, которые не используются в содержимом. Вывод списка ID позволит вам вручную проверить и удалить их через функцию wp_delete_attachment.
Как безопасно удалить неиспользуемые медиа файлы
Перед удалением важно создать полную резервную копию сайта и базы данных. Это позволит восстановить файлы в случае ошибки.
Удалять файлы можно вручную через админ-панель, используя список из плагинов или результата кода, либо автоматически с помощью плагинов с функцией массового удаления.
Пример удаления вложения по ID с помощью кода:
function wpbox_delete_unused_media($attachment_id) {
if (wp_delete_attachment($attachment_id, true)) {
echo "Вложение с ID {$attachment_id} успешно удалено.";
} else {
echo "Ошибка при удалении вложения с ID {$attachment_id}.";
}
}Рекомендации по автоматизации и регулярному обслуживанию
Чтобы не накапливать мусор, настройте регулярный аудит медиа библиотеки. Можно использовать WP Cron для запуска проверок и удалений по расписанию.
Пример простой автоматизации удаления неиспользуемых медиа раз в неделю:
function wpbox_cron_delete_unused_media() {
$unused = wpbox_find_unused_media();
foreach ($unused as $id) {
wp_delete_attachment($id, true);
}
}
if (!wp_next_scheduled('wpbox_weekly_media_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpbox_weekly_media_cleanup');
}
add_action('wpbox_weekly_media_cleanup', 'wpbox_cron_delete_unused_media');Для более удобного управления можно использовать плагин My Popup для уведомлений администраторов о больших объемах неиспользуемых файлов.
Заключение по теме удаления неиспользуемых медиа
Удаление неиспользуемых медиа файлов — важная задача для поддержания чистоты и производительности WordPress сайтов. Используйте проверенные плагины, комбинируйте с собственными скриптами для точного контроля, обязательно делайте резервное копирование и автоматизируйте процесс для регулярного обслуживания.
Более продвинутые инструменты, такие как Clearfy Pro, помогут оптимизировать не только медиа, но и другие аспекты сайта, делая вашу работу проще и эффективнее.