Home>Snippets>Eliminare l’immagine associata quando si elimina un articolo

Eliminare l’immagine associata quando si elimina un articolo


Eliminare l'immagine associata quando si elimina un articolo

Quante volte ti sarà capitato di inserire nuovi articoli in WordPress, con relativa immagine in evidenza associata e poi di dover cancellare, per un motivo o per un altro, questi stessi articoli? Sicuramente molto spesso!
Ti sarai accorto, forse, che quando elimini un articolo, l’immagine in evidenza associata, però, resta “in vita” sia nello spazio FTP, sia nel database di WordPress, sotto forma di post_type di tipo attachment, sprecando spazio per immagini che magari non verranno più utilizzate.

Ma niente paura: ecco un piccolo frammento di codice che ti permetterà di ovviare a tutto questo, cancellando definitivamente l’immagine in evidenza ogni qual volta ti appresti ad eliminare l’articolo a cui è associata.

  • Leggi l'articolo, ti bastano solo 2 minuti, 47 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Il codice

È sufficiente inserire nel file functions.php del tema attivo, che trovi nello spazio FTP del tuo sito, in:

wp-content/themes/{nome_del_tema}/

la seguente funzione:

// Elimina l'immagine in evidenza associata quando si elimina un articolo
add_action( 'before_delete_post', function( $post_id ) {
    if ( has_post_thumbnail( $post_id ) ) {
      $attachment_id = get_post_thumbnail_id( $post_id );
      wp_delete_attachment( $attachment_id, true );
    }
}, 10 );

Ed il gioco è fatto! La funzione wp_delete_attachment() si occuperà non solo di eliminare i riferimenti all’immagine dal database insieme a tutti i metadata associati (titolo, didascalia, descrizione, testo alternativo), ma provvederà a cancellare definitivamente dal server anche il file fisico con tutte le thumbnails derivate, con un conseguente risparmio di spazio.



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Rimuovere l'auto-linking nei commenti di WordPress

Rimuovere l’auto-linking nei commenti di WordPress


Ecco un piccolo ma utilissimo snippet per rimuovere la funzione di WordPress che converte automaticamente url e indirizzi email in link cliccabili nei commenti.

Come salvare un'immagine remota sul proprio server con PHP

Come salvare un’immagine remota sul proprio server con PHP


Hai bisogno di scaricare un’immagine da un server remoto e salvarla nel tuo spazio FTP? Scopri come fare, utilizzando poche righe di codice PHP.


Qualche dubbio? Ecco le opinioni degli altri utenti

Se funzionasse anche per l'immagine in evidenza e le gallerie immagini di WooCommerce sarebbe fantastico. Lo fa?

In risposta a Lamberto

Buongiorno Lamberto,
l’articolo si riferisce in generale all’immagine in evidenza associata ad un post, quindi vale anche per l’immagine in evidenza dei prodotti di WooCommerce.
Per quanto riguarda la gallery, è sufficiente aggiungere allo snippet (dopo wp_delete_attachment()) la riga:
delete_post_meta( $post_id, '_product_image_gallery' );
Che provvederà a disassociare le immagini dal prodotto. In questo caso, rispetto all’immagine in evidenza, le immagini verranno solamente disassociate dal singolo prodotto e non eliminate completamente dal server.

E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)