Este código se asegura de que, al eliminar un post en WordPress, también se eliminen todos los archivos adjuntos asociados a ese post, garantizando así que no queden archivos huérfanos en el sistema.



////////////////////////////////////////////////////////////////////////////////////// 


// Al eliminar un post en WordPress, también se eliminen todos los archivos adjuntos asociados a ese post


////////////////////////////////////////////////////////////////////////////////////// 




function dl_borrar_medio_asociado($post_id) {

    $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)) {

            wp_die('Error al borrar el archivo.');

        }

    }

}

add_action('before_delete_post', 'dl_borrar_medio_asociado');