Come posso eliminare tutte le immagini NON UTILIZZATE dalla mia directory dei caricamenti?


20

Sto cercando di ripulire le mie cartelle di upload in quanto ora stanno iniziando a occupare troppo spazio sul mio server.

Ho cercato di utilizzare i plug-in per raggiungere questo obiettivo, come DNUI e Cleanup Images, ma questi plug-in non sono realizzabili o nel caso di DNUI (che è stato aggiornato di recente e funziona) non ottengono i risultati esatti che sto cercando. Questo perché il mio sito utilizza Woocommerce e un tema che utilizza entrambe le immagini in altri luoghi anziché solo post o pagine come intestazioni, piè di pagina e gallerie. Sembra che WC utilizzi il proprio plugin incorporato in Lightbox chiamato Pretty Photo, da cui vengono chiamate le immagini dettagliate come "non utilizzate" da DNUI.

So che è un po 'una domanda, ma mi chiedo se qualcuno potrebbe indicarmi la giusta direzione? Non sono uno sviluppatore, quindi probabilmente non dovrei nemmeno postare qui, ma posso risolvere le cose con tempo e determinazione. Ho visto degli script su questo sito che ottengono gli stessi risultati del plug-in DNUI ma nulla che tenga conto degli altri usi delle immagini (se è persino possibile?). Qualsiasi aiuto sarebbe molto apprezzato.


2
Volevo fare la stessa cosa, ma ciò che mi preoccupa è come definire inutilizzato . Ad esempio, un autore potrebbe aver caricato immagini in una bozza di post, quindi creato un'altra bozza di post, incollato il contenuto e quel post è stato pubblicato. Ciò significa che le immagini vengono assegnate al post bozza, non al post pubblicato. Forse uno script che controlla tutti i post e controlla gli URL delle immagini per vedere quali immagini sono state utilizzate e non. Speriamo di avere una buona risposta.
Christine Cooper

Sfortunatamente, più elaborata è la tua definizione di "inutilizzato", minore è la probabilità di trovare una soluzione adeguata. Di quante immagini (in numero e dimensioni) stai parlando?
Rarst

Ciao Rarst, grazie per la risposta, il sito è attivo da circa 5 anni ed è molto dipendente dall'immagine, con alcuni cambiamenti di tema e plugin. Credo che ci siano letteralmente migliaia di immagini inutilizzate. E a causa della quantità di modifiche le dimensioni variano enormemente. Ho già usato le miniature rigenerate forzate per cercare di ridurre questo numero e questo ha funzionato in misura ma questo plugin spesso scade a causa della quantità. Alza anche la CPU sul mio server a un livello impraticabile se la lascio attivata.
G-Olly,

Mi rendo conto della complessità del problema e quindi ho utilizzato la libreria multimediale per cercare di individuare ed eliminare queste immagini. Sfortunatamente ho scoperto che spesso elenca anche quelle usate come inutilizzate e viceversa, in quanto tale è un processo scrupolosamente lento ma ora ho il naso nella mola.
G-Olly,

1
Se posso inserire i miei due centesimi, per alcuni tipi di siti Web penso che il problema possa essere risolto empiricamente. Per questi siti webcrawlers stanno visitando ogni pagina del sito. Dal registro del tuo server ottieni l'elenco degli URL di tutte le pagine visitate. Analizza queste pagine usando DOMDocument e ottieni tutti gli elementi <img> e i loro srcs. Il problema con questo approccio è se Javascript genera dinamicamente hrefs e srcs.

Risposte:


4

Eliminazione di immagini tramite plug-in:

Puoi usare questo plugin, cercherà nel tuo database e cercherà se l'immagine è inserita in qualsiasi post (nei contenuti, come immagine in primo piano, in qualsiasi campo personalizzato, ovunque ...) o come sfondo ...

Se l'immagine non viene utilizzata da nessuna parte, ti darà la possibilità di eliminarla. Otterrai un elenco di tutte le immagini sul tuo sito non più utilizzate, in modo da poterle eliminare in modo sicuro.

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/


Eliminazione manuale delle immagini:

Puoi anche cercare nella tua libreria multimediale immagini non collegate a post e pagine.

Vai alla libreria multimediale e fai clic su "non collegato" per visualizzare tutte le immagini che potrebbero essere visualizzate su altre parti del tuo sito o non utilizzate.


1
Il problema con le immagini che non sono allegate a nessun post è che possono essere utilizzate in qualche altro posto, ad esempio se si dispone di un campo personalizzato che utilizza un uploader di immagini basato sul uploader multimediale nativo di Wordpress, a seconda di come era il tema codificata, l'immagine caricata lì non è allegata a nessun post (nel tuo database). Un'idea ancora valida.
Bruno Monteiro,

Vado al secondo @BrunoMonteiro qui. È del tutto possibile avere immagini che non sono allegate a un post.
BODA82,

3

Attività cron / pianificate e una scansione del DB sono i tuoi amici

Dovrebbe essere un plug-in, potresti assegnargli un intervallo di wp_cron anche, non molto diverso da quello suggerito sopra ma con l'aggiunta di controllare qualsiasi campo simile a 'post_content' (dovrai identificarli, a seconda del tuo ambiente WP) per l'URI / l'URL dell'immagine. Ciò ha il potenziale per essere estremamente dispendioso in termini di tempo / tassazione sui processi del sistema - realisticamente questo processo dovrebbe essere eseguito solo una volta al giorno o alla settimana - supponendo che non vi siano altri motivi legali / commerciali da eseguire più frequentemente.

una configurazione DB master-slave dell'origine consente a questo processo di ridurre significativamente le prestazioni, ma credo che esuli dallo scopo di questa domanda.



1

Dovresti scansionare il tuo wp-content/uploads cartella per i file caricati, quindi il tuo database per i riferimenti a quei file e infine abbinarli insieme. Ciò che non può essere abbinato dovrebbe essere sicuro da rimuovere.

La scansione del database è la parte difficile. La maggior parte dei riferimenti ai file sono memorizzati nel Catalogo multimediale a cui è possibile accedere utilizzando le funzioni / API WordPress standard. Ma cosa succede ai file rimossi dal Catalogo multimediale ma a cui fanno ancora riferimento i post? O file a cui collegano altri plugin in modi diversi?

Ho fatto un numero considerevole di test e da quello che ho raccolto, tutti i riferimenti ai file sono archiviati in formato di testo normale (cioè solo una cella di tabella uguale al percorso del file o all'URL), formato HTML (cioè il contenuto di un post), come dati serializzati o infine come oggetti JSON. Dovresti scansionare l'intero database e provare a indovinare quale formato viene utilizzato all'interno di ogni cella. Naturalmente, potrebbero esserci altri modi esotici che alcuni plugin stanno usando per conservare i riferimenti ai loro file, ma questi possono essere gestiti solo caso per caso.

Di conseguenza ho scritto un plugin che fa tutto automaticamente, dal momento che 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.


Bel approccio ... Mi chiedo se hai riscontrato qualche problema con sempre più contenuti / plugin / post aggiunti nel tempo ...
jj_

Ci sono problemi qua e là, sì. Ad esempio, per alcuni plugin è necessario escludere determinate tabelle che altrimenti potrebbero rallentare notevolmente le cose. Cerchiamo di escludere automaticamente determinate parole chiave, come le tabelle "log", ma ovviamente non intercetta tutti i casi.
liviucmg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.