Come eliminare tutte le immagini INUTILIZZATE dalla directory uploads?
Sto cercando di ripulire le mie cartelle uploads poiché stanno iniziando a occupare troppo spazio sul mio server.
Ho provato a utilizzare plugin per raggiungere questo obiettivo come DNUI e Cleanup Images, ma questi plugin sono o inutilizzabili o nel caso di DNUI (che è stato aggiornato di recente e funziona) non ottengono esattamente i risultati che cerco. Questo perché il mio sito utilizza WooCommerce e un tema che utilizzano entrambi le immagini in altri luoghi oltre che nei post o nelle pagine, come header, footer e gallerie. Sembra che WC utilizzi il proprio plugin Lightbox integrato chiamato Pretty Photo, da cui vengono richiamate le immagini che DNUI indica come "inutilizzate".
So che è una richiesta un po' impegnativa, ma mi chiedo se qualcuno potrebbe indirizzarmi nella giusta direzione. Non sono uno sviluppatore, quindi probabilmente non dovrei nemmeno pubblicare qui, ma riesco a capire le cose con tempo e determinazione. Ho visto script su questo sito che ottengono gli stessi risultati del plugin DNUI, ma nulla che tenga conto di altri utilizzi delle immagini (se è anche possibile?). Qualsiasi aiuto sarebbe molto apprezzato.

Eliminare le immagini utilizzando un plugin:
Puoi utilizzare questo plugin, che eseguirà una scansione del tuo database e verificherà se un'immagine è inserita in qualche articolo (nel contenuto, come immagine in evidenza, in qualsiasi campo personalizzato, ovunque...) o come sfondo...
Se l'immagine non è utilizzata da nessuna parte, ti darà l'opzione di eliminarla. Riceverai una lista di tutte le immagini sul tuo sito che non sono più utilizzate, così potrai eliminarle in sicurezza.
https://wordpress.org/plugins/dnui-delete-not-used-image-wordpress/
e questo, funziona ancora, anche se è obsoleto
https://wordpress.org/plugins/wordpress-uploaded-files-cleaner/
Eliminare le immagini manualmente:
Puoi anche cercare nella tua libreria multimediale le immagini che non sono collegate ad articoli o pagine.
Vai nella libreria multimediale e clicca su "non collegate" per visualizzare tutte le immagini che potrebbero essere visualizzate in altre parti del tuo sito o non utilizzate.

Il problema con le immagini che non sono allegate a nessun post è che potrebbero essere utilizzate in qualche altro posto - ad esempio, se hai un campo personalizzato che utilizza un caricatore di immagini basato sul caricatore multimediale nativo di WordPress, a seconda di come è stato codificato il tema, l'immagine caricata lì non è allegata a nessun post (nel tuo database). Rimane comunque un'idea valida.

Cron/Attività pianificate e un'analisi del database sono i tuoi alleati
Sarebbe necessario un plugin, potresti assegnargli anche un intervallo wp_cron, non molto diverso da quello suggerito sopra ma con l'aggiunta di controllare qualsiasi campo simile a 'post_content' (dovrai identificare questi campi, dipendenti dal tuo ambiente WP) per l'URI/URL dell'immagine. Questo ha il potenziale di essere estremamente dispendioso in termini di tempo e oneroso per i processi del sistema - realisticamente questo processo avrebbe bisogno di essere eseguito solo una volta al giorno o alla settimana - assumendo che non ci siano altre ragioni legali/di business per eseguirlo più frequentemente.
Una configurazione master-slave del database sorgente permette a questo processo di essere significativamente meno dannoso per le prestazioni, ma questo va oltre lo scopo di questa domanda credo.

Ho provato il plugin Image Cleanup ed è il migliore, ma è comunque bene fare prima un backup.

Dovresti eseguire una scansione della cartella wp-content/uploads
per i file caricati, poi del database per i riferimenti a quei file, e infine confrontarli tra loro. Ciò che non può essere abbinato può essere rimosso in sicurezza.
La scansione del database è la parte complessa. La maggior parte dei riferimenti ai file sono memorizzati nella Libreria Multimediale a cui puoi accedere utilizzando le funzioni/API standard di WordPress. Ma cosa succede ai file che vengono rimossi dalla Libreria Multimediale ma sono ancora referenziati dai post? O ai file a cui altri plugin si collegano in modi diversi?
Ho eseguito un numero considerevole di test e da ciò che ho verificato, tutti i riferimenti ai file sono memorizzati in formato testo semplice (cioè una cella di tabella uguale al percorso o URL del file), formato HTML (cioè il contenuto di un post), come dati serializzati, o infine come oggetti JSON. Dovresti scansionare l'intero database e cercare di indovinare quale formato viene utilizzato all'interno di ogni cella. Naturalmente, potrebbero esserci altri modi esotici che alcuni plugin utilizzano per mantenere i riferimenti ai loro file, ma quelli possono essere gestiti solo caso per caso.
Di conseguenza ho scritto un plugin che fa automaticamente tutto ciò, poiché ne avevo bisogno per alcuni siti web dei nostri clienti, e l'ho chiamato Theia Upload Cleaner. Ha funzionato bene per me, ma ovviamente dovresti sempre fare un backup prima di provare qualcosa del genere.

Approccio interessante... mi chiedo se hai riscontrato problemi con l'aumento di contenuti, plugin o post nel tempo...

Sì, ci sono alcuni problemi. Ad esempio, per alcuni plugin è necessario escludere determinate tabelle che altrimenti potrebbero rallentare notevolmente le operazioni. Cerchiamo di escludere automaticamente in base a determinate parole chiave, come le tabelle "log", ma ovviamente non copre tutti i casi.

Il plugin WordPress Media Cleaner è piuttosto buono - https://wordpress.org/plugins/media-cleaner/
Mi piace perché offre supporto per altri plugin come Advanced Custom Fields (ACF), Divi Builder, Visual Composer e Elementor. (Solo nella versione a pagamento)
