В процессе работы с WordPress медиа библиотека часто разрастается за счет множества изображений, видео и других файлов, которые уже не используются на сайте. Это приводит к увеличению размера бэкапа, замедлению резервного копирования и увеличению нагрузки на хостинг. В этой статье мы разберем, как с помощью WPDebug подхода выявить и удалить неиспользуемые медиафайлы из библиотеки WordPress, используя как готовые решения, так и собственные скрипты.
Почему важно удалять неиспользуемые медиа файлы
Медиафайлы, которые не прикреплены ни к одному посту или странице и не используются в контенте, занимают место на сервере без пользы. С течением времени их количество может достигать сотен или тысяч, что негативно влияет на:
- Общий размер бэкапов и время их создания.
- Скорость загрузки и отдачи файлов сервером.
- Организацию библиотеки и удобство работы с ней.
Регулярное удаление таких файлов поддерживает сайт в оптимальном состоянии и облегчает его обслуживание.
Как найти неиспользуемые медиа файлы в WordPress
Существует несколько способов выявить неиспользуемые медиафайлы:
1. Использование плагинов
Самый простой способ — использовать специализированные плагины. Рассмотрим два популярных варианта:
- Media Cleaner — плагин, который сканирует медиа библиотеку и контент сайта, выявляя файлы, не используемые на страницах и в записях. Плагин поддерживает интеграцию с WooCommerce, плагинами галерей, конструкторами страниц.
- DNUI (Delete Not Used Image) — более легкий плагин, который проверяет неиспользуемые изображения в базе данных и позволяет удалять их.
Оба плагина требуют внимательности при использовании: всегда делайте резервную копию сайта перед массовым удалением файлов.
2. Ручной поиск с помощью SQL-запросов и кода
Если вы хотите более гибко контролировать процесс и избежать установки дополнительных плагинов, можно написать свой скрипт, который проверит, используются ли медиафайлы в контенте или метаданных.
Для начала разберемся, как устроена связь между медиафайлами и контентом:
- Каждый медиафайл — это запись типа
attachmentв таблицеwp_posts. - Использование файла может быть в поле
post_contentлюбого поста или страницы (например, через тег<img>или ссылку). - Файл может быть прикреплен к записи через поле
post_parent. - Некоторые плагины или темы могут хранить ссылки на медиафайлы в пользовательских полях (
postmeta).
Ниже приведен пример скрипта, который находит ID вложений, не связанных с контентом и без родительских записей, и не упомянутых в пользовательских полях:
function wpdebug_get_unused_attachments() {
global $wpdb;
// Получаем все attachment ID
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $attachment_id) {
// Проверяем наличие в post_parent
$post_parent = $wpdb->get_var($wpdb->prepare(
"SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d",
$attachment_id
));
if ($post_parent && $post_parent != 0) {
continue; // Файл привязан к записи
}
// Проверяем использование в post_content
$used_in_content = $wpdb->get_var($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE %s LIMIT 1",
'%' . $attachment_id . '%'
));
if ($used_in_content) {
continue; // Используется в контенте
}
// Проверяем пользовательские поля
$used_in_meta = $wpdb->get_var($wpdb->prepare(
"SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE %s LIMIT 1",
'%' . $attachment_id . '%'
));
if ($used_in_meta) {
continue; // Используется в метаданных
}
$unused[] = $attachment_id;
}
return $unused;
}
Этот код можно запустить, например, через WP-CLI или добавить в файл темы для отладки, чтобы получить список неиспользуемых ID вложений.
Автоматическое удаление неиспользуемых медиафайлов с помощью WPDebug функции
После того, как мы получили список неиспользуемых вложений, можно безопасно их удалить с помощью функции:
function wpdebug_delete_unused_attachments() {
$unused_attachments = wpdebug_get_unused_attachments();
foreach ($unused_attachments as $attachment_id) {
wp_delete_attachment($attachment_id, true); // true - удаляет файлы с диска
}
return count($unused_attachments);
}
Эту функцию рекомендуется запускать с подтверждением и обязательно сделать резервную копию сайта. Также можно настроить ее выполнение через WP-CLI для удобства.
Рекомендации по безопасности и резервному копированию
Удаление файлов — критическая операция. Чтобы избежать потери данных, придерживайтесь следующих правил:
- Обязательно делайте резервную копию сайта и базы данных перед удалением.
- Тестируйте скрипты на тестовой копии сайта.
- Используйте плагин Clearfy Pro, который помогает оптимизировать работу сайта и очистить ненужные данные без риска.
- Проверяйте вручную список файлов перед удалением.
Заключение
Удаление неиспользуемых медиафайлов — важная задача для поддержания здоровья WordPress сайта. Комбинируя использование проверенных плагинов и собственных функций WPDebug для анализа и удаления, вы сможете эффективно оптимизировать медиабиблиотеку. Внедряйте регулярные проверки, чтобы избежать накопления мусора и обеспечить стабильную работу сайта.
Для установки и обновления плагинов и дополнительных инструментов рекомендуем посетить WPShop.ru.