Jak automatycznie usuwać zdjęcia produktów w WooCommerce

jak automatycznie usuwać zdjęcia produktów

Czy starasz się zachować porządek w swoim sklepie internetowym? A co z porządkiem na serwerze? Zdarza Ci się usuwać czasem produkty ze sklepu? A czy zauważyłeś, że po usunięciu produktu, na serwerze zostają zdjęcia do niego przypisane? Często zresztą niepotrzebne. W tym krótkim wpisie pokażę Tobie jak automatycznie usuwać zdjęcia produktów w WooCommerce razem z produktami.

Zdjęcia produktów

Jak już sam pewnie wiesz, usunięte produkty sklepu WooCommerce trafiają do kosza. Można je stamtąd przywrócić albo trwale usunąć. Trwałe usunięcie produktu, nie usuwa jednak jego zdjęć znajdujących się w Bibliotece mediów. Ma to czasem swoje zalety (np. gdy to samo zdjęcie widnieje w kilku produktach), ale generalnie w większości przypadków nie jest szczególnie pożądane.

Dlaczego zapytasz? Podczas wgrywania jednego zdjęcia do Biblioteki, WordPress tworzy przynajmniej kilka jego wersji miniatur w różnych rozdzielczościach. W zależności od używanego motywu jest to najczęściej od 3-10 obrazów. Podczas usuwania produktu, obrazy te wraz z miniaturami zostają na serwerze i zajmują miejsce. W przypadku dużych sklepów internetowych z setkami lub tysiącami produktów, może to stanowić mały problem.

Jak automatycznie usuwać zdjęcia produktów w WooCommerce

Aby automatycznie usuwać zdjęcia produktu podczas jego usuwania ze sklepu wystarczy jedna prosta funkcja uruchamiana w zapleczu. Poniżej przedstawię Ci dwie możliwości jej dodania w swoim sklepie, ale tak na prawdę polecam tylko metodę numer 2

// Automatyczne usuwanie obrazów WooCommerce podczas usuwania produktu
add_action( 'before_delete_post', 'delete_product_images', 10, 1 );

function delete_product_images( $post_id )
{
    $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 ) ) {
        wp_delete_post( $featured_image_id );
    }

    if( !empty( $image_galleries_id ) ) {
        foreach( $image_galleries_id as $single_image_id ) {
            wp_delete_post( $single_image_id );
        }
    }
}

Jak wdrożyć zmiany

Metoda 1: edycja pliku functions.php w motywie.

Nie polecam tej metody z kilku drobnych powodów o których przeczytasz w podlinkowanym wpisie. Najważniejszym z nich jest to, że wpływa na czas wyświetlania strony. Lepiej jest ją wykonywać tylko w zapleczu sklepu. Jeśli jednak korzystasz z motywu potomnego i chcesz koniecznie zrobić to w ten sposób, to przejdź do zakładki “Wygląd – Edytor motywu” i z rozwijanej listy wybierz plik functions.php aby przystąpić do jego edycji. Skopiuj powyższy kod, wklej i zapisz zmiany.

Metoda 2: użycie wtyczki Code Snippets.

Dużo lepszym pomysłem w tym wypadku jest użycie dowolnej z darmowych wtyczek wklejających tzw. snippety. Snippetem jest np. powyższy kod dzięki któremu usuniesz zdjęcia powiązane z produktem. Ja polecam darmową i bardzo intuicyjną wtyczkę Code Snippets, która pozwoli na dodanie powyższego kodu bez modyfikacji motywu. Jej zaletą jest to, że kod będzie zawsze działał, nawet gdy zmienisz motyw na inny.

jak automatycznie usuwać zdjęcia produktów

Dzięki wtyczce Code Snippets szybko i wygodnie wstawisz dowolny snippet na swoją stronę bez konieczności edycji plików motywu.

Po prostu zainstaluj wtyczkę, włącz ją a następnie wklej powyższy fragment. Zaznacz przy tym, żeby wykonywać kod tylko w zapleczu administratora.

Ostrzeżenie

Na koniec tego wpisu muszę dodać ostrzeżenie. Jeśli jakiś obrazek użyjesz do kilku produktów i zdecydujesz się usunąć tylko jeden produkt, to zdjęcie zostanie usunięte ze wszystkich pozostałych produktów. Mam nadzieję, że jest to dla Ciebie logiczne. Zdjęcie produktu zostaje wtedy trwale usunięte z serwera a zatem nie będzie dostępne dla innych produktów. Przed użyciem upewnij się zatem, że zdjęcie jest użyte tylko raz.

To tyle na dziś. Dziękuję za uwagę i do przeczytania w kolejnym wpisie!

ZAPISZ SIĘ DO NEWSLETTERA!

Bądź na bieżąco! W newsletterze będziesz otrzymywać m.in. informacje o nowych wpisach na blogu, poradnikach na YouTube, e-bookach oraz ważnych wydarzeniach ze świata WordPress. Wysyłam jedynie wartościowe treści.

Facebook
Twitter
Email
Drukuj