Come rimuovere le immagini inutilizzate dalla tua libreria multimediale in WordPress
Pubblicato: 2019-10-15Quando il tuo sito web è in esecuzione da un po' di tempo, è normale che ci siano cose che non sono più necessarie ma che esistono ancora. Uno degli esempi più fastidiosi è quello delle immagini che non vengono più utilizzate ma che continuano a occupare spazio nel tuo WordPress.
Queste immagini che non utilizzi più nei tuoi post o pagine, o in qualsiasi altro tipo di contenuto che è diventato obsoleto, rimangono ospitate sul tuo server, sprecando risorse e spazio di archiviazione. La cosa migliore che puoi fare con loro è eliminarli se non li utilizzerai di nuovo. Ma come puoi trovarli e assicurarti che non vengano utilizzati da nessuna parte? Vediamolo…
Prima di cominciare
La prima cosa da fare se vuoi eliminare dal tuo WordPress le immagini che non vengono più utilizzate è fare una copia di backup del tuo sito web, inclusi i file multimediali all'interno della cartella wp-content .
Sebbene le immagini che carichi nella libreria multimediale siano archiviate all'interno wp-content/uploads/ , è possibile che se utilizzi un plug-in per caricare i file, finiscano in una cartella diversa. Quindi, assicurati di avere una copia di backup del tuo database WordPress e tutti i file all'interno della cartella wp-content e non solo wp-content/uploads .
Una volta creato il backup, possiamo continuare con i seguenti passaggi...
Rileva le immagini orfane in WordPress
Esistono diversi modi per rilevare le immagini che non vengono più utilizzate in alcun contenuto all'interno del tuo sito Web WordPress. Il più efficace è cercarli nel database di WordPress.
Per questo dobbiamo sapere che le immagini che hai caricato nella libreria multimediale di WordPress sono archiviate nella tabella wp_posts come se fossero un post o una pagina. Ciò che li distingue dagli altri contenuti archiviati in questa tabella è che hanno il valore dell'allegato nella colonna post_type .
A proposito, avviso importante: se non hai conoscenza dei database, è meglio che tu stia attento a ciò che fai d'ora in poi, tieni un backup del database e dai un'occhiata a questo articolo del Codice di WordPress in cui spiegano tutto in più dettaglio.
Dove eravamo rimasti? Oh sì: vogliamo trovare tutte quelle immagini che non vengono utilizzate nel tuo WordPress. Questo è più facile da definire che da fare, ma non preoccuparti, cercheremo di spiegarlo passo dopo passo e in modo semplice.
Tutto quello che dobbiamo fare è scrivere una query in linguaggio SQL da eseguire nel database MySQL di WordPress. Se non sai come accedere al database del tuo sito web, contatta il tuo provider di hosting per istruzioni su come farlo. Se ti danno accesso a un phpMyAdmin, va bene anche
La query che devi eseguire è:
Analizziamolo.
La prima cosa che facciamo è iniziare con un'istruzione SELECT per selezionare tutte determinate righe di una tabella specifica. Nella riga 2, la stella significa che vogliamo "tutte le colonne" in ogni riga.
Le righe 3 e 4 indicano le tabelle che ci interessano. In questo caso, vogliamo selezionare gli allegati di WordPress che, come ho detto, sono archiviati in wp_posts , quindi questa è la tabella che useremo.
Dalla riga 5 in poi, l'istruzione WHERE ci consente di aggiungere condizioni per filtrare le righe desiderate ed escludere il resto. Ciascuna condizione tra le righe 6 e 14 è separata dall'istruzione AND , che serve a indicare che tutte le condizioni devono essere soddisfatte contemporaneamente. Se una riga non soddisfa tutte le condizioni WHERE , non verrà restituita nell'output della query SELECT .
La prima condizione nella riga 6 definisce che vogliamo ottenere solo le righe il cui valore nella colonna post_type è attachment . Come ho detto prima, anche i post e le pagine sono archiviati nella tabella wp_posts , tra gli altri contenuti. Con questa condizione otterremo solo le immagini.
Per ogni allegato , WordPress memorizza se è stato caricato nel contesto di una pagina o di un post utilizzando la colonna post_parent . Pertanto, la condizione della riga 8 ci fa ottenere solo quegli allegati il cui post_parent non esiste (cioè non sono legati a nessuna pagina o post).

Se invece scegliamo un'immagine come immagine in evidenza di un post o di una pagina, WordPress crea una riga di metadati nella tabella wp_postmeta con la chiave _thumbnail_id e, come valore, imposta l'identificatore dell'immagine dell'allegato . Nella riga 10 della query otteniamo quelle immagini il cui identificatore non appare come il valore di una riga di wp_postmeta per la chiave _thumbnail_id .
La riga 12 definisce una condizione per filtrare le immagini il cui URL non appare nel contenuto di post o pagine. Cioè, se l'URL dell'immagine appare all'interno del contenuto, presumiamo che l'immagine sia ancora utile e quindi non dovrebbe essere eliminata. Nota che l'URL dell'immagine appare nella colonna guid della tabella wp_posts .
Infine, è possibile che tu abbia utilizzato qualche plugin che inserisce l'URL delle immagini all'interno delle righe della tabella wp_postmeta . La condizione della riga 14 ci consente di rilevare questo caso particolare.
E questo è tutto! L'esecuzione di questa query SQL restituirà tutte le immagini che presumibilmente non vengono utilizzate in nessuna parte del tuo sito.
Tieni presente che quando cerchi immagini orfane, potrebbero esserci falsi positivi. Cioè, immagini che sono contrassegnate come inutilizzate ma sono effettivamente utilizzate in WordPress. Questo perché puoi utilizzare plug-in che definiscono le proprie tabelle e mantengono lì i riferimenti alle tue immagini. Se questo è il tuo caso, devi adattare la query aggiungendo ulteriori condizioni per coprire questi casi.
Rimuovere le immagini orfane in WordPress
Ora che abbiamo le immagini che potenzialmente non vengono utilizzate in WordPress, dovremmo dare un'occhiata ai risultati e vedere se tutte le immagini che abbiamo elencato vengono utilizzate o meno. A seconda di ciò che troviamo, possiamo perfezionare la query aggiungendo più condizioni come abbiamo detto prima. Se tutto sembra corretto, puoi andare avanti.
Per eliminare un allegato in WordPress abbiamo la funzione wp_delete_attachment che puoi trovare descritta qui. Se guardi la documentazione, vedrai che questa funzione ottiene l'identificatore dell'allegato e un parametro booleano che indica se vuoi forzare l'eliminazione o semplicemente eliminarlo.
Quando chiami questa funzione in WordPress, eliminerà l' allegato e tutte le informazioni associate, inclusi eventuali commenti, aspetto nelle tassonomie, relativi metadati e, soprattutto, i file di immagine archiviati nella cartella wp-content .
Per ottenere l'elenco delle istruzioni wp_delete_attachment che useremo in PHP, dobbiamo solo cambiare la riga 2 della query precedente in modo che ciò che la query SELECT restituisce sia la stringa di caratteri che costruisce l'istruzione che vogliamo. Uno per ogni riga restituita dalla query. Puoi vedere i risultati qui:

Ora non ti resta che copiare tutte queste istruzioni e incollarle, ad esempio, nel file functions.php del tuo tema e visitare il tuo sito web. Ciò causerà l'esecuzione di queste istruzioni, eliminando le immagini orfane dal tuo WordPress. Dopodiché, rimuovi le precedenti istruzioni incollate perché non saranno più necessarie.
Ricordati di controllare che il tuo sito web funzioni ancora perfettamente e di non aver cancellato le immagini rilevanti. Se qualcosa è andato storto, non preoccuparti: dovresti avere un backup del tuo database e della cartella wp-content , quindi dovresti essere in grado di ripristinare il tuo sito web allo stato precedente.
Se hai problemi con SQL e il database, o non hai capito nulla di ciò che ho spiegato qui, prima fammi sapere scrivendo un commento in basso. Successivamente, prova a utilizzare un plug-in come Media Cleaner. Il risultato finale che otterrai deve essere molto simile a quello che abbiamo visto in questo post.
Immagine in primo piano di Gary Chan su Unsplash .
