Як видалити всі невикористані зображення зі свого каталогу завантажень?


20

Я намагаюся очистити свої папки для завантаження, оскільки вони зараз починають займати занадто багато місця на моєму сервері.

Я намагався використовувати плагіни для досягнення цієї мети, таких як DNUI та Cleanup Images, але ці плагіни не є працездатними, або у випадку DNUI (який нещодавно оновлений і працює) не досягають точних результатів, які я маю після. Це тому, що мій сайт використовує Woocommerce та тему, в якій обидва використовують зображення в інших місцях, а не лише публікації чи сторінки, такі як заголовки, колонтитули та галереї. Схоже, що WC використовує власний вбудований плагін Lightbox під назвою Pretty Photo, звідки і викликаються зображення, деталізовані DNUI як "невикористані".

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


2
Я хотів зробити те саме, але мене хвилює те, як визначити невикористане . Наприклад, автор, можливо, завантажив зображення в чернетку, а потім створив іншу чернетку, вставив вміст, і ця публікація буде опублікована. Це буде означати, що зображення присвоюються чернетній публікації, а не опублікованій публікації. Можливо, сценарій, який розглядає всі публікації та перевіряє URL-адреси зображень, щоб побачити, які зображення використовувались, а ні. Сподіваємось, у нас є хороша відповідь.
Крістін Купер

На жаль, чим більш детальним є ваше визначення "невикористаного", тим менше ймовірність, що ви знайдете відповідне рішення для нього. Скільки (за кількістю та розміром) зображень ви говорите?
Рарст

Привіт Рарст, спасибі за відповіді, сайт працює вже близько 5 років і дуже залежить від зображення, має досить багато змін теми та плагінів. Я вважаю, що є буквально 1000 тисяч невикористаних зображень. А через кількість змін розміри сильно різняться. Я вже використовував мініатюри для відновлення сили, щоб спробувати зменшити цю кількість, і це спрацювало до певної міри, але цей плагін часто вичерпується через суму. Це також піднімає процесор на моєму сервері до непрацездатного рівня, якщо я залишу його активованим.
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/


Видалення зображень вручну:

Ви також можете шукати через медіатеку зображення, які не прикріплені до публікацій та сторінок.

Перейдіть до бібліотеки мультимедіа та натисніть "без прив’язки", на ній відобразяться всі зображення, які можуть відображатися в інших частинах вашого сайту або не використовуватися.


1
Проблема із зображеннями, не прикріпленими до жодної публікації, полягає в тому, що вони можуть використовуватися в іншому місці - наприклад, якщо у вас є власне поле, яке використовує завантажувач зображень на основі власного завантажувача мультимедіа Wordpress, залежно від того, якою була тема закодоване, завантажене там зображення не прикріплене до жодної публікації (у вашій базі даних). І все-таки дійсна ідея.
Бруно Монтейро

Я другий @BrunoMonteiro тут. Цілком можливо мати зображення, не прикріплені до публікації.
BODA82

3

Cron / Заплановані завдання та сканування БД - ваш друг

Це повинен бути плагін, ви можете призначити йому інтервал wp_cron навіть не набагато на відміну від запропонованого вище, але з додаванням перевірки будь-якого "post_content" типу поля (вам потрібно буде ідентифікувати їх, залежно від вашого середовища WP) для URI / URL-адреси зображення. Це може бути надзвичайно трудомістким / оподатковувати процеси в системі - реально цей процес потрібно буде запускати лише один раз на день або тиждень - якщо припустити, що немає інших юридичних / ділових причин для більш частого запуску.

конфігурація джерела БД з основним підлеглим джерелом дозволяє значно зменшити цей процес, але це не виходить за рамки цього питання.



1

Вам потрібно буде відсканувати свою wp-content/uploadsпапку на завантажені файли, а потім у базі даних на предмет посилань на ці файли та нарешті зіставити їх разом. Те, що неможливо зібрати, має бути безпечним для видалення.

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

Я зробив значну кількість тестів, і з того, що я зібрав, всі посилання на файли зберігаються у просто текстовому форматі (тобто просто клітинка таблиці, що дорівнює шляху файлу чи URL), формату HTML (тобто вмісту публікації), як серіалізовані дані або, нарешті, як об'єкти JSON. Вам доведеться сканувати всю базу даних і спробувати відгадати, який формат використовується в кожній комірці. Звичайно, можуть існувати й інші екзотичні способи, які деякі плагіни використовують для збереження посилань на свої файли, але з ними можна оброблятись лише в кожному конкретному випадку.

Отже, я написав плагін, який автоматично виконує все це, оскільки мені потрібен був для деяких веб-сайтів наших клієнтів, і назвав його Theia Upload Cleaner . Для мене це спрацювало добре, але, звичайно, завжди слід робити резервну копію, перш ніж спробувати щось подібне.


Хороший підхід ... Цікаво, чи стикалися ви з якоюсь проблемою, коли з часом додається все більше вмісту / плагінів / публікацій ...
jj_

Тут і тут є питання, так. Наприклад, для деяких плагінів потрібно виключити певні таблиці, які в іншому випадку можуть значно уповільнити роботу. Ми намагаємось автоматично виключати певні ключові слова, наприклад "журнали", але це не стосується всіх випадків.
liviucmg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.