How to delete all post and attachments of a user when I delete it?

When I delete a user, WordPress can just delete the post or page of this user,
not his custom post and his attachments.

An idea for a special hook?

add_action( 'delete_user', 'my_delete_user');

function my_delete_user($user_id) {
    $user = get_user_by('id', $user_id);
    $the_query = new WP_Query( $args );
        if ( have_posts() ) { 
            while ( have_posts() ) { 
                the_post(); 
                    wp_delete_post( $post->ID, false ); 

                    // HOW TO DELETE ATTACHMENTS ?
            }
        }
}

Related posts

Leave a Reply

1 comment

  1. The hook you choose is appropriate, and here is how to use it to delete all posts of all types (posts, pages, links, attachments, etc) of the deleted user:

    add_action('delete_user', 'my_delete_user');
    function my_delete_user($user_id) {
        $args = array (
            'numberposts' => -1,
            'post_type' => 'any',
            'author' => $user_id
        );
        // get all posts by this user: posts, pages, attachments, etc..
        $user_posts = get_posts($args);
    
        if (empty($user_posts)) return;
    
        // delete all the user posts
        foreach ($user_posts as $user_post) {
            wp_delete_post($user_post->ID, true);
        }
    }
    

    If you only want to delete user attachments, change the post_type arguments from any to attachment and use wp_delete_attachment($attachment_id) instead of wp_delete_post().