Dokan マーケットプレイスから未使用の WooCommerce 画像を削除する方法

公開: 2022-04-06

WooCommerce 製品の一括削除中に画像を削除するソリューションをお探しですか?

オンラインビジネスを運営している間は、警戒する必要があります。 流行のファッション、新しいトレンド、お店の古い商品など、あらゆることに注意する必要があります。 販売される可能性が高い最新の製品でサイトを更新し続けることができます。

ストアを最新の状態に保つために、長期間販売されていない商品や季節外れの商品を削除する必要がある場合があります。 WooCommerce ストアの場合、デフォルトの WooCommerce 設定を使用するか、SQL コマンドを実行することで、これを簡単に行うことができます。

しかし問題は、投稿を削除しても WordPress がメディアを削除しないことです。 これは、何千もの高品質の画像を持つ e コマース サイトまたはマーケットプレイスにとって大きな問題になる可能性があります。

次のブログでは、シングル ストアとマルチベンダー マーケットプレイスの両方で製品を削除するときに、ギャラリーから WooCommerce の画像を削除する方法を学習します。

製品を削除した後に WooCommerce 製品の画像を削除する必要がある理由

eコマースストア用に、何千もの関連画像を含む大量の製品をアップロードする必要があります. また、何らかの理由でサイトから一部の製品を削除することも非常に普通のことです。 製品を削除した後、メディア ライブラリを確認すると、削除した製品に使用されていたすべての画像が見つかります。

これは、WooCommerce で製品を削除した後、システムがそれに関連付けられているほとんどのデータを削除することを意味します。 ただし、その製品のイメージはデータベースとメディア フォルダーに残ります。 サイトが不必要に重くなります。

その製品を削除した後に製品画像を削除する利点
1. サイトのパフォーマンスを改善する
2.サーバーストレージを最小限に抑えてストア速度を向上させる
3.サイトを軽量に保つ
4. さらにアップロードするためにより多くのスペースを作成します
5. 店舗データベースを最適化する

市場の所有者にとって、シナリオはもう少し複雑です。 さまざまなベンダーによってアップロードされたすべてのメディア ファイルを監視することは非常に困難です。 ベンダーは毎日かなりの数の製品をアップロードし、既存の製品の多くを削除する可能性があるためです。 その結果、製品イメージによってサーバー スペースが減少し、サイトのパフォーマンスが低下する可能性があります。

その場合、ユーザー/ベンダーがいずれかの製品を削除した場合は、注目の画像とギャラリーの画像をすべて削除することをお勧めします。

しかし、誰かが複数の投稿で同じ画像を使用すると、別の問題が発生する可能性があります。

さて、今日は、これらすべての障害を管理するためのソリューションを紹介します。

製品を削除した後に Woocommerce の画像を削除する方法は?

一括削除 WooCommerce 製品

ここでは、フックbefore_delete_postを使用します。 このフックの詳細については、こちらをご覧ください。

以下の手順に従って、WooCommerce 製品の一括削除中に未使用の画像を削除します。

  • Step1: 子テーマを作成する
  • Step2: 子テーマ内にコードを実装する
  • Step3: オンライン ストアの結果を確認する

ステップ 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 製品

未使用の画像をメディア ギャラリーから削除することをお勧めします。 これらの画像は、ストアに何の価値ももたらしません。 むしろ、サイトのパフォーマンスを妨げます。 ただし、最初に、オンライン ショップから削除する必要がある商品を決定する必要があります。

一括削除が必要な製品の種類を強調表示しました-

  • 季節の商品
  • 循環積
  • 在庫切れ商品
  • 非売品
  • テスト製品

季節商品:一部の商品は、特定の期間が過ぎると需要がなくなる場合があります。 たとえば、1 年の中で最も寒い時期をターゲットにしたストアに新しい冬の商品を追加できます。 しかし、春になるとそのような商品の需要は減少し、すぐにトレンドから外れてしまいます。 また、ショップから WooCommerce 製品を一括削除する必要があります。

周期的な製品:在庫には定期的に新しい製品を補充する必要があります。 たとえば、特別なお祭りの後、古い商品をストアから削除し、新しい商品をアップロードする必要があります。

在庫切れの製品:在庫がなく、再入荷の可能性が低い製品は、それらの製品を取り除くことをお勧めします。

売れない商品:一般的に販売されていない商品が在庫にある場合は、それらの商品をストアから削除する必要があります。 これらの製品は責任を増大させ、スペースを無駄にするだけだからです。

テスト製品:元の製品を発売する前に、多くのテスト製品を導入して、それがうまく機能するかどうかを確認する必要があります。 メイン製品を起動したら、テスト製品を削除することをお勧めします。

関連リソース: WooCommerce を使用して作成できる製品の種類!

オーバー・トゥ・ユー

WooCommerce 製品を一括削除する必要がある場合は、いくつかの状況が考えられます。 そして、WordPress ユーザーとしては難しくありません。 しかし、製品を削除した後、関連する製品の画像がまだメディア ライブラリに残っていると、問題が発生します。

上記のガイドは、WooCommerce で製品を削除するときに画像を削除する自動プロセスを組み込むのに役立ちます。

アクション フックを使用して WooCommerce 製品と製品画像を一括削除する方法について、まだ質問がありますか? コメントでお知らせください!

weDevs ブログを購読する

毎週のニュースレターを送信します。スパムはありません