Dokan 마켓플레이스에서 사용하지 않는 WooCommerce 이미지를 제거하는 방법
게시 됨: 2022-04-06WooCommerce 제품을 일괄 삭제하는 동안 이미지를 제거하는 솔루션을 찾고 계십니까?
온라인 비즈니스를 운영하는 동안 경계해야 합니다. 트렌드 패션, 새로운 트렌드, 매장의 구식 제품 등 모든 것을 알고 있어야 합니다. 판매 가능성이 높은 최신 제품으로 사이트를 최신 상태로 유지할 수 있습니다.
스토어를 최신 상태로 유지하기 위해 오랫동안 판매되지 않은 일부 상품이나 시즌이 지난 상품을 삭제해야 하는 경우가 있습니다. WooCommerce 상점의 경우 기본 WooCommerce 설정을 사용하거나 SQL 명령을 실행하여 쉽게 이 작업을 수행할 수 있습니다.
그런데 문제는 워드프레스가 게시물 삭제 시 미디어를 삭제하지 않는다는 점입니다. 이는 수천 개의 고품질 이미지가 있는 전자 상거래 사이트나 마켓플레이스의 주요 문제가 될 수 있습니다.
다음 블로그에서는 단일 매장 및 다중 공급업체 마켓플레이스 모두에서 제품을 삭제할 때 갤러리에서 WooCommerce 이미지를 제거하는 방법을 알아봅니다.
해당 제품을 삭제한 후 WooCommerce 제품 이미지를 제거해야 하는 이유
전자 상거래 상점을 위해 수천 개의 관련 이미지와 함께 많은 제품을 업로드해야 합니다. 때로는 어떤 이유로 인해 사이트에서 일부 제품을 삭제하는 것도 매우 정상적인 일입니다. 제품을 삭제한 후 미디어 라이브러리를 확인하면 삭제된 제품에 사용된 모든 이미지를 찾을 수 있습니다.
즉, WooCommerce에서 제품을 삭제하면 시스템이 관련 데이터 대부분을 제거합니다. 그러나 해당 제품의 이미지는 데이터베이스와 미디어 폴더에 남아 있습니다. 그것은 귀하의 사이트를 불필요하게 무겁게 만들 것입니다.
해당 제품을 삭제한 후 제품 이미지를 제거할 때의 이점 |
1. 사이트 성능 향상 |
2. 서버 보관 최소화로 매장 속도 향상 |
3. 사이트를 가볍게 유지 |
4. 추가 업로드를 위한 더 많은 공간 확보 |
5. 매장 데이터베이스 최적화 |
마켓플레이스 소유자의 경우 시나리오가 조금 더 복잡합니다. 다른 공급업체에서 업로드한 모든 미디어 파일을 모니터링하는 것은 매우 어렵습니다. 벤더가 매일 상당한 수의 제품을 업로드하고 기존 제품 중 다수를 삭제할 수도 있기 때문입니다. 차례로 그들의 제품 이미지는 사이트 성능에 좋지 않은 서버 공간을 줄일 수 있습니다.
이 경우 사용자/벤더가 제품을 삭제하면 추천 이미지와 갤러리 이미지를 모두 삭제하는 것이 좋습니다.
그러나 누군가가 여러 게시물에서 동일한 이미지를 사용하는 경우 또 다른 문제가 발생할 수 있습니다.
오늘은 이러한 모든 장애물을 관리할 수 있는 솔루션을 보여드리겠습니다.
제품 삭제 후 Woocommerce 이미지를 삭제하는 방법은 무엇입니까?
여기서는 before_delete_post
후크를 사용합니다. 여기에서 이 후크에 대한 자세한 내용을 확인하세요.
WooCommerce 제품을 일괄 삭제하는 동안 사용하지 않는 이미지를 제거하려면 아래 단계를 따르십시오.
- 1단계: 하위 테마 만들기
- 2단계: 차일드 테마 내부에 코드 구현
- 3단계: 온라인 스토어 결과 확인
1단계: 하위 테마 만들기
먼저 자식 테마를 만듭니다. 이 개선 사항은 테마와 관련이 있으므로 이 자식 테마를 수정해야 합니다.
이 가이드를 따라 쉽게 자식 테마를 만들 수 있습니다. 또는 WordPress 플러그인을 사용하여 하위 테마를 만드십시오.
2단계: 하위 테마 내부에 코드 구현
다음으로 자식 테마 functions.php를 열고 아래 코드를 붙여넣습니다.
// Automatically Delete Woocommerce Images After Deleting a Product 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 ); } } }
3단계: 온라인 스토어 결과 확인
코드를 삽입한 후 functions.php를 저장합니다. 이제 WooCommerce 상점으로 이동하여 제품을 삭제하십시오. 연결된 이미지도 삭제됩니다.
Dokan Marketplace에서 WooCommerce 제품 이미지를 제거하는 방법
이제 마켓플레이스 내에서 제품을 삭제한 후 Woocommerce 이미지를 삭제하는 방법을 보여드리겠습니다. 서버 공간을 확보하고 미디어 라이브러리 혼란을 줄이는 데 도움이 됩니다.
이 경우 테마의 functions.php 파일에 아래 코드 스니펫을 붙여넣습니다.
<?php add_action( 'before_delete_post', function( $id ) { $product = wc_get_product( $id ); if ( ! $product ) { return; } $all_product_ids = []; $product_thum_id_holder = []; $gallery_image_id_holder = []; $thum_id = get_post_thumbnail_id( $product->get_id() ); if ( function_exists( 'dokan' ) ) { $vendor = dokan()->vendor->get( dokan_get_current_user_id() ); if ( ! $vendor instanceof WeDevs\Dokan\Vendor\Vendor || $vendor->get_id() === 0 ) { return; } $products = $vendor->get_products(); if ( empty( $products->posts ) ) { return; } foreach ( $products->posts as $post ) { array_push( $all_product_ids, $post->ID ); } } else { $args = [ 'posts_per_page' => '-1' ]; $products = wc_get_products( $args ); foreach ( $products as $product ) { array_push( $all_product_ids, $product->get_id() ); } } foreach ( $all_product_ids as $product_id ) { if ( intval( $product_id ) !== intval( $id ) ) { array_push( $product_thum_id_holder, get_post_thumbnail_id( $product_id ) ); $wc_product = wc_get_product( $product_id ); $gallery_image_ids = $wc_product->get_gallery_image_ids(); if ( empty( $gallery_image_ids ) ) { continue; } foreach ( $gallery_image_ids as $gallery_image_id ) { array_push( $gallery_image_id_holder, $gallery_image_id ); } } } if ( ! in_array( $thum_id, $product_thum_id_holder ) && ! in_array( $thum_id, $gallery_image_id_holder ) ) { wp_delete_attachment( $thum_id, true ); if ( empty( $thum_id ) ) { return; } $gallery_image_ids = $product->get_gallery_image_ids(); if ( empty( $gallery_image_ids ) ) { return; } foreach ( $gallery_image_ids as $gallery_image_id ) { wp_delete_attachment( $gallery_image_id, true ); } } } );
이제 공급업체가 시장에서 제품을 삭제할 때마다 관련 제품 이미지가 미디어 라이브러리에서 자동으로 사라집니다.
보너스: WooCommerce 제품을 대량으로 삭제해야 하는 경우
미디어 갤러리에서 사용하지 않는 이미지를 제거하는 것이 좋습니다. 이러한 이미지는 매장에 가치를 더하지 않습니다. 오히려 사이트 성능을 방해합니다. 그러나 먼저 온라인 상점에서 제거해야 하는 제품을 결정해야 합니다.
대량 삭제가 필요할 수 있는 제품 유형을 강조했습니다.
- 계절 상품
- 순환 제품
- 품절 상품
- 미판매 상품
- 테스트 제품
계절 상품: 일부 상품은 특정 기간이 지나면 수요가 감소할 수 있습니다. 예를 들어 연중 가장 추운 시기를 목표로 매장에 새로운 겨울 제품을 추가할 수 있습니다. 그러나 봄이 되면 그러한 제품에 대한 수요가 줄어들고 머지않아 유행에서 완전히 벗어날 것입니다. 그리고 상점에서 WooCommerce 제품을 일괄 삭제해야 합니다.
주기적 제품: 재고는 정기적으로 새 제품으로 보충되어야 합니다. 예를 들어 특별한 축제가 끝나면 상점에서 오래된 제품을 제거하고 새 제품을 업로드해야 합니다.
품절 상품: 재고가 없고 재입고 가능성이 적은 상품은 처분하는 것이 좋습니다.
비판매 제품: 재고에 일반적으로 판매되지 않는 제품이 있는 경우 스토어에서 해당 제품을 삭제해야 합니다. 이러한 제품은 책임만 증가시키고 공간을 낭비하기 때문입니다.
테스트 제품: 원래 제품을 출시하기 전에 여러 번 테스트 제품을 도입하여 제대로 작동하는지 확인해야 합니다. 메인 제품을 실행한 후에는 테스트 제품을 삭제하는 것이 좋습니다.
관련 리소스: WooCommerce를 사용하여 생성할 수 있는 제품 유형!
당신에게
WooCommerce 제품을 대량으로 삭제해야 하는 경우가 여러 가지 있을 수 있습니다. 그리고 WordPress 사용자로서 어렵지 않을 것입니다. 그러나 제품을 삭제한 후에도 관련 제품 이미지가 여전히 미디어 라이브러리에 남아 있는 경우 문제가 발생합니다.
위의 가이드는 WooCommerce에서 제품을 삭제할 때 이미지를 삭제하는 자동 프로세스를 포함하는 데 도움이 됩니다.
작업 후크를 사용하여 WooCommerce 제품 및 제품 이미지를 일괄 삭제하는 방법에 대해 여전히 질문이 있습니까? 댓글로 알려주세요!