How to Automatically Delete Woocommerce Images After Deleting a Product?
Images are the biggest headache for a Woocommerce Website as it takes a lot of storage space in Server and eventually slow down the Website speed.
When you constantly Add New Products and discard old products, It creates the issue of Unused images. As you know when you delete a Product on your Woocommerce store, the images attached to it won’t be deleted from your Media Library.
So, More and more products you add to your online store, more images will be stored on your database and slows it down.
So, By using a code snippets like this, You will be able to clean up images that are currently not attached to any existing product pages. If you use the same image on multiple product pages then the image will not be deleted.
// Automatically Delete Woocommerce Images After Deleting a Product add_action( 'before_delete_post', 'delete_product_images', 10, 1 ); function delete_product_images( $post_id ) { if ( !current_user_can( 'delete_products' ) ) { return; } $product = wc_get_product( $post_id ); if ( !$product ) { return; } $featured_image_id = $product->get_image_id(); $image_galleries_id = $product->get_gallery_image_ids(); if( !empty( $featured_image_id ) ) { $is_featured_image_used = is_image_used( $featured_image_id, $post_id ); if ( !$is_featured_image_used ) { wp_delete_attachment( $featured_image_id, true ); } } if( !empty( $image_galleries_id ) ) { foreach( $image_galleries_id as $single_image_id ) { $is_image_used = is_image_used( $single_image_id, $post_id ); if ( !$is_image_used ) { wp_delete_attachment( $single_image_id, true ); } } } } function is_image_used( $image_id, $current_product_id ) { $query = new WP_Query( array( 'post_type' => 'product', 'post_status' => 'publish', 'meta_query' => array( 'relation' => 'OR', array( 'key' => '_thumbnail_id', 'value' => $image_id, 'compare' => '=' ), array( 'key' => '_product_image_gallery', 'value' => '"'.$image_id.'"', 'compare' => 'LIKE' ) ), 'post__not_in' => array( $current_product_id ), 'fields' => 'ids', 'posts_per_page' => -1 ) ); return ( $query->have_posts() ); }
All, You have to do is use this above php code on your Wordpress website. You can either use a code manager plugin or directly paste it inside the theme’s function.php file.
Once you Add the code on your Wordpress website, then it will auto delete all product images when you delete that products. In this way, You can free up your storage space and improve your Website Speed performance.
If you want us to Optimize your Wordpress Website speed, then you can Take our Services as well.