Cum pot șterge toate imaginile NEUTILIZATE din directorul uploads?
Încerc să curăț directoarele mele de uploads deoarece încep să ocupe prea mult spațiu pe server.
Am încercat să folosesc plugin-uri pentru a realiza acest lucru, cum ar fi DNUI și Cleanup Images, dar aceste plugin-uri fie nu funcționează, fie în cazul DNUI (care a fost actualizat recent și funcționează) nu oferă exact rezultatele pe care le doresc. Acest lucru se întâmplă deoarece site-ul meu folosește WooCommerce și o temă care utilizează imagini în alte locuri decât doar în articole sau pagini, cum ar fi headerele, footerele și galeriile. Se pare că WooCommerce folosește propriul plugin Lightbox încorporat numit Pretty Photo, de unde sunt apelate imaginile care sunt marcate ca "neutilizate" de către DNUI.
Știu că e mult cerut, dar mă întreb dacă cineva m-ar putea îndruma în direcția corectă? Nu sunt dezvoltator, probabil nici n-ar trebui să postez aici, dar pot să înțeleg lucrurile cu timp și determinare. Am văzut scripturi pe acest site care obțin aceleași rezultate ca plugin-ul DNUI, dar nimic care să ia în considerare alte utilizări ale imaginilor (dacă este măcar posibil?). Orice ajutor ar fi foarte apreciat.

Ștergerea imaginilor folosind un plugin:
Poți folosi acest plugin, care va căuta în baza ta de date și va verifica dacă o imagine este utilizată în vreun articol (în conținut, ca imagine reprezentativă, în orice câmp personalizat, oriunde...) sau ca fundal...
Dacă imaginea nu este folosită nicăieri, îți va oferi opțiunea de a o șterge. Vei primi o listă cu toate imaginile de pe site care nu mai sunt utilizate, astfel încât să le poți șterge în siguranță.
https://wordpress.org/plugins/dnui-delete-not-used-image-wordpress/
și acesta, încă funcționează, chiar dacă este învechit
https://wordpress.org/plugins/wordpress-uploaded-files-cleaner/
Ștergerea manuală a imaginilor:
De asemenea, poți căuta în biblioteca de media imagini care nu sunt atașate la articole sau pagini.
Accesează biblioteca de media și dă clic pe "neatașate" - va afișa toate imaginile care pot fi afișate în alte părți ale site-ului sau care nu sunt utilizate.

Problema cu imaginile care nu sunt atașate la nicio postare este că ele pot fi folosite în altă parte - de exemplu, dacă ai un câmp personalizat care folosește un uploader de imagini bazat pe uploaderul Media nativ al WordPress, în funcție de cum a fost codată tema, imaginea încărcată acolo nu este atașată la nicio postare (în baza ta de date). Totuși, o idee validă.

Cron/Sarcini programate și o scanare a bazei de date sunt prietenii tăi
Ar trebui să fie un plugin, căruia i-ai putea atribui chiar un interval wp_cron, nu foarte diferit de cel sugerat mai sus, dar cu adăugarea verificării oricărui câmp de tip 'post_content' (va trebui să le identifici, în funcție de mediul tău WordPress) pentru URI/URL-ul imaginii. Acest proces are potențialul de a fi extrem de consumator de timp/resurse pentru procesele sistemului - realist, acest proces ar trebui să ruleze o dată pe zi sau pe săptămână - presupunând că nu există alte motive legale/afaceri care să necesite o rulare mai frecventă.
O configurație master-slave a bazei de date sursă ar face acest proces mult mai puțin dăunător din punct de vedere al performanței, dar cred că aceasta depășește domeniul de aplicare al acestei întrebări.

Am încercat plugin-ul Image Cleanup și este cel mai bun, dar totuși este bine să faci o copie de rezervă mai întâi.

Va trebui să scanați folderul wp-content/uploads
pentru fișiere încărcate, apoi baza de date pentru referințe către acele fișiere, și în final să le potriviți împreună. Ce nu poate fi potrivit ar trebui să fie sigur de șters.
Scanarea bazei de date este partea complicată. Majoritatea referințelor către fișiere sunt stocate în Biblioteca Media, la care puteți accesa folosind funcțiile/API-ul standard WordPress. Dar ce se întâmplă cu fișierele care sunt eliminate din Biblioteca Media dar sunt încă referențiate de postări? Sau fișierele la care alte plugin-uri fac legături în moduri diferite?
Am efectuat un număr considerabil de teste și din câte am observat, toate referințele către fișiere sunt fie stocate în format text simplu (adică doar o celulă de tabel egală cu calea sau URL-ul fișierului), format HTML (adică conținutul unei postări), ca date serializate, sau în final ca obiecte JSON. Va trebui să scanați întreaga bază de date și să încercați să ghiciți ce format este folosit în fiecare celulă. Desigur, pot exista și alte metode exotice pe care unele plugin-uri le folosesc pentru a păstra referințe către fișierele lor, dar acestea pot fi tratate doar caz cu caz.
Ca urmare, am scris un plugin care face automat toate acestea, deoarece aveam nevoie de el pentru unele site-uri web ale clienților noștri, și l-am numit Theia Upload Cleaner. A funcționat bine pentru mine, dar desigur ar trebui să faceți întotdeauna o copie de rezervă înainte de a încerca ceva de genul acesta.

Abordare interesantă... Mă întreb dacă ai întâmpinat vreo problemă cu ea pe măsură ce adaugi tot mai mult conținut / plugin-uri / articole în timp...

Da, există probleme din când în când. De exemplu, pentru unele plugin-uri trebuie să excluzi anumite tabele care altfel pot încetini considerabil procesul. Încercăm să excludem automat după anumite cuvinte cheie, cum ar fi tabelele "log", dar nu prinde toate cazurile, desigur.

Plugin-ul WordPress Media Cleaner este destul de bun - https://wordpress.org/plugins/media-cleaner/
Îmi place pentru că are suport pentru alte plugin-uri precum Advanced Custom Fields (ACF), Divi Builder, Visual Composer și Elementor. (Doar în versiunea plătită)
