Как удалить все НЕиспользуемые изображения из моего каталога загрузок?

20

Я пытаюсь очистить свои папки загрузки, так как они начинают занимать слишком много места на моем сервере.

Я пытался использовать плагины для достижения этой цели, такие как DNUI и Cleanup Images, но эти плагины либо неработоспособны, либо в случае DNUI (который был недавно обновлен и работает) не достигают точных результатов, которые мне нужны. Это потому, что мой сайт использует Woocommerce и тему, которая использует изображения в других местах, а не только посты или страницы, такие как верхние и нижние колонтитулы и галереи. Похоже, что WC использует свой собственный встроенный плагин Lightbox под названием Pretty Photo, из которого вызываются изображения, которые детализированы как «неиспользуемые» DNUI.

Я знаю, что это что-то вроде вопроса, но мне интересно, кто-нибудь может указать мне правильное направление? Я не разработчик, поэтому, вероятно, даже не стоит публиковать здесь, но я могу решить все со временем и решимостью. На этом сайте я видел сценарии, которые достигают тех же результатов, что и плагин DNUI, но ничего, что не учитывает использование других изображений (если это вообще возможно?). Любая помощь приветствуется.

G-Olly
источник
2
Я хотел сделать то же самое, но меня беспокоит то, как определить неиспользованное . Например, автор, возможно, загрузил изображения в черновик сообщения, а затем создал еще один черновик сообщения, вставил содержимое, и этот пост был опубликован. Это будет означать, что изображения назначены черновому сообщению, а не опубликованному. Может быть, скрипт, который просматривает все сообщения и проверяет URL-адреса изображений, чтобы увидеть, какие изображения были использованы, а какие нет. Надеюсь, у нас есть хороший ответ.
Кристина Купер
К сожалению, чем сложнее будет ваше определение «неиспользованного», тем меньше вероятность, что вы найдете подходящее решение для него. Сколько (по количеству и размеру) изображений вы говорите?
Первое
Привет, Рарст, спасибо за ответ, сайт работает уже около 5 лет и очень зависит от имиджа, с несколькими изменениями темы и плагинов. Я считаю, что есть буквально тысячи неиспользованных изображений. И из-за количества изменений размеры сильно варьируются. Я уже использовал Force Regenerate Thumbnails, чтобы попытаться уменьшить это число, и это сработало до некоторой степени, но этот плагин часто отключается из-за количества. Это также поднимает процессор на моем сервере до неработоспособного уровня, если я оставляю его активированным.
G-Olly
Я осознаю всю сложность проблемы и поэтому использую библиотеку мультимедиа, чтобы попытаться определить и удалить эти изображения. К сожалению, я обнаружил, что это также часто списки, используемые как неиспользуемые, и наоборот, так как это кропотливо медленный процесс, но теперь я прижался к точильному камню.
G-Olly
1
Если я могу поставить свои два цента, для некоторых видов сайтов я думаю, что проблема может быть решена опытным путем. Для этих сайтов веб-сканеры посещают каждую страницу сайта. Из журнала вашего сервера получите список URL всех посещенных страниц. Разберите эти страницы с помощью DOMDocument и получите все элементы <img> и их srcs. Проблема с этим подходом заключается в том, что Javascript динамически генерирует hrefs и srcs.

Ответы:

4

Удаление изображений с помощью плагина:

Вы можете использовать этот плагин, он будет искать в вашей базе данных и смотреть, вставлено ли изображение в какой-либо пост (в содержании, в качестве избранного изображения, в любом настраиваемом поле, где угодно ...) или в качестве фона ...

Если изображение нигде не используется, вы сможете удалить его. Вы получите список всех изображений на вашем сайте, которые больше не используются, поэтому вы можете безопасно удалить их.

https://wordpress.org/plugins/dnui-delete-not-used-image-wordpress/

и это, все еще работа, даже она устарела

https://wordpress.org/plugins/wordpress-uploaded-files-cleaner/


Удаление изображений вручную:

Вы также можете искать в своей медиатеке изображения, которые не привязаны к сообщениям и страницам.

Зайдите в медиатеку и нажмите «неприкреплено», на ней будут отображаться все изображения, которые могут отображаться в других частях вашего сайта или не использоваться.

Продвинутый SEO
источник
1
Проблема с изображениями, которые не прикреплены к какому-либо сообщению, состоит в том, что они могут использоваться в каком-то другом месте - например, если у вас есть настраиваемое поле, которое использует загрузчик изображений, основанный на родном загрузчике мультимедиа Wordpress, в зависимости от того, как была тема закодировано, загруженное изображение не прикреплено ни к одному сообщению (в вашей базе данных). Все еще верная идея.
Бруно Монтейру
Я буду вторым @BrunoMonteiro здесь. Вполне возможно иметь изображения, которые не прикреплены к сообщению.
BODA82
3

Cron / Запланированные задачи и обход БД - ваш друг

Это должен быть плагин, вы могли бы назначить ему интервал wp_cron даже, не сильно отличаясь от предложенного выше, но с добавлением проверки любого подобного поля 'post_content' (вам нужно будет определить их, в зависимости от вашей среды WP) для URI / URL изображения. Это потенциально может быть чрезвычайно трудоемким / обременительным для системных процессов - реально этот процесс нужно будет запускать только раз в день или неделю - при условии, что нет других юридических / деловых причин для более частого выполнения.

конфигурация базы данных «ведущий-ведомый» источника позволяет этому процессу значительно снизить производительность, но я считаю, что это выходит за рамки этого вопроса.

Брандт Соловий
источник
2

Я попробовал плагин Image Cleanup, и он лучший, но все же хорошо сначала сделать резервную копию.

cowboy14
источник
1

Вам нужно будет отсканировать вашу wp-content/uploadsпапку на наличие загруженных файлов, а затем базу данных на наличие ссылок на эти файлы и, наконец, сопоставить их вместе. То, что не может быть сопоставлено, должно быть безопасно удалено.

Сканирование базы данных является сложной частью. Большинство ссылок на файлы хранятся в библиотеке мультимедиа, доступ к которой можно получить с помощью стандартных функций / API WordPress. Но что происходит с файлами, которые удалены из библиотеки мультимедиа, но на которые все еще ссылаются записи? Или файлы, на которые другие плагины ссылаются по-разному?

Я провел значительное количество тестов, и из того, что я собрал, все ссылки на файлы либо хранятся в текстовом формате (т. Е. Просто в ячейке таблицы, равной пути к файлу или URL), в формате HTML (т. Е. В содержимом сообщения), как сериализованные данные, или, наконец, как объекты JSON. Вам придется сканировать всю базу данных и попытаться угадать, какой формат используется в каждой ячейке. Конечно, могут быть другие экзотические способы, которыми некоторые плагины используют для хранения ссылок на свои файлы, но они могут быть обработаны только в каждом конкретном случае.

Следовательно, я написал плагин, который автоматически делает все это, так как он был нужен для некоторых сайтов наших клиентов, и назвал его Theia Upload Cleaner . Это хорошо сработало для меня, но, конечно, вы должны всегда делать резервную копию, прежде чем пытаться что-то подобное.

liviucmg
источник
Хороший подход ... Интересно, если вы столкнулись с какой-либо проблемой с этим, все больше и больше контента / плагинов / постов добавлялось со временем ...
jj_
Есть проблемы тут и там, да. Например, для некоторых плагинов вам необходимо исключить определенные таблицы, которые в противном случае могут значительно замедлить работу. Мы пытаемся автоматически исключать некоторые ключевые слова, такие как таблицы «log», но, конечно, это не охватывает все случаи.
liviucmg