function delete_post_media( $post_id ) {
/*vogliamo cancellare i media "attached" all'articolo che viene cancellato; 
di default ciò non avviene e la cancellazione del post lascia inalterate le 
immagini ad esso associate*/
    $attachments = get_posts( array(
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'any',
        'post_parent'    => $post_id
    ) );

    foreach ( $attachments as $attachment ) {
        if ( false === wp_delete_attachment( $attachment->ID , true) ) {
            // Log failure to delete attachment.
        }
    }
}
add_action('before_delete_post', 'delete_post_media');

Con questa funzione custom, utilizzando wp_delete_attachment(), alla cancellazione del post corrisponde anche la cancellazione delle immagini ad esso associate.

Può essere utile nel caso di siti con aggiornamenti frequenti che prevedono la cancellazione dei post, anche a seguito di servizi di allineamento con altre base dati ( es. agenzie immobiliari) per evitare di far crescere inutilmente la cartella dei media e la tabella wp_posts.