When you delete a product in WooCommerce, the associated images don’t automatically get removed. This is done to prevent data loss. However, you can configure a custom action that deletes the product images upon deletion. Follow this step-by-step guide to set it up on your WooCommerce store.
Step 1: Create a Function to Delete Product Images
First, create a custom function that deletes the images linked to a product. This function will remove both the featured image and gallery images.
function remove_product_images($post_id) { $product = wc_get_product($post_id); if ($product) { $gallery_ids = $product->get_gallery_image_ids(); $featured_image_id = $product->get_image_id(); // Delete featured image if ($featured_image_id) { wp_delete_attachment($featured_image_id, true); } // Delete gallery images foreach ($gallery_ids as $image_id) { wp_delete_attachment($image_id, true); } } }
Step 2: Link the Function to Product Deletion
Next, use the before_delete_post
hook to trigger the function when a product is deleted.
add_action('before_delete_post', 'remove_product_images');
Step 3: Add the Code to the functions.php
File
Add the code to your theme’s functions.php
file. If you’re using a child theme, add it there to preserve the code even during theme updates.
Step 4: Test the Product Deletion
Test the functionality after adding the code. When you delete a product from the WooCommerce admin, its images should be deleted from the server as well.
Important Notes:
- Always backup your site before making changes, as deleting product images is permanent.
- Test this functionality on a staging site before implementing it on your live site.