WooCommerce-Produktbilder automatisch nach dem Entfernen eines Produktes löschen

Wenn du in deinem WooCommmer-Onlineshop eine wechselnde Produktpalette zum Verkauf anbietest, können sich mit der Zeit sehr viele Produktbilder ansammeln. Beim Löschen eines Produktes werden die damit verbundenen Produktbilder nicht automatisch aus der Mediathek entfernt. Sie verbleiben auf dem Server und nehmen weiterhin Speicherplatz in Anspruch. Sie „müllen“ deine Datenbank zu und deine Mediathek wird durch die ungenutzten Bilder auch nicht übersichtlicher. In diesem Beitrag erfährst du, wie du WooCommerce-Produktbilder automatisch nach dem Entfernen eines Produktes löschen kannst.

Wenn du ungenutzte Produktbilder mit Hilfe des nachfolgenden Code-Snippet automatisch beim Entfernen eines Produktes löscht, entlastest du den Server, du behebst die Unübersichtlichkeit in der Medienbibliothek und du trägst zu einer besseren Gesamtperformance deines Onlineshops bei.

WICHTIGER HINWEIS: Wenn das Bild nicht nur dem zu löschenden Produkt, sondern auch anderen Produkten zugeordnet wurde, ist dieses Bild nach dem Löschen des Produkts auch für die anderen Produkte verloren!

Füge das nachfolgende Code-Snippet in die functions.php deines Themes ein. Beachte bitte, dass das eingefügte Code-Snippet in der functions.php beim Aktualisieren deines Themes überschrieben wird.

Für die dauerhafte Einbindung von Änderungen in deinem WordPress Theme, kannst du ein Plugin, wie z.B. Code Snippets, verwenden. Code Snippets ist eine einfache Möglichkeit, um deiner Website PHP Code Snippets hinzuzufügen, ohne dass eine Änderung und Anpassung der functions.php deines Theme erforderlich ist.

/**
 * DEVSLIFE auto delete woocommerce product images
 * https://devslife.de oder https://widilo.de
 */
add_action( 'before_delete_post', 'wwidilo_autodelete_product_images', 10, 1 );
function widilo_autodelete_product_images( $post_id )
{
    $product = wc_get_product( $post_id );
	//check if the post is a product
    if ( !$product ) {
        return;
    }
	//get product images by id
    $featured_image_id = $product->get_image_id();
    $image_galleries_id = $product->get_gallery_image_ids();
    //delete featured product image
    if( !empty( $featured_image_id ) ) {
        wp_delete_post( $featured_image_id );
    }
   //delete image galleries
    if( !empty( $image_galleries_id ) ) {
        foreach( $image_galleries_id as $single_image_id ) {
            wp_delete_post( $single_image_id );
        }
    }
}
PHP