如何从您的 Dokan 市场中删除未使用的 WooCommerce 图像
已发表: 2022-04-06在批量删除 WooCommerce 产品时寻找删除图像的解决方案?
在经营在线业务时,您必须保持警惕。 您应该了解一切,例如流行时尚、新趋势和商店的过时产品。 您可以使用更有可能售出的最新产品来更新您的网站。
为了使您的商店保持最新状态,有时您需要删除一些长时间未销售的产品或过季的产品。 对于 WooCommerce 商店,您可以使用默认的 WooCommerce 设置或运行 SQL 命令轻松地执行此操作。
但问题是 WordPress 在删除帖子时不会删除媒体。 对于拥有数千张高质量图像的电子商务网站或市场来说,这可能是一个主要问题。
在下面的博客中,您将了解如何在为单一商店和多供应商市场删除产品时从图库中删除 WooCommerce 图像。
为什么您应该在删除该产品后删除 WooCommerce 产品图片
您需要为您的电子商务商店上传包含数千张相关图片的大量产品。 并且有时由于某些原因从您的站点中删除某些产品也是很正常的。 删除产品后,如果您检查媒体库,您会发现所有用于已删除产品的图像。
这意味着在 WooCommerce 中删除产品后,系统会删除与其关联的大部分数据。 但该产品的图像将保留在数据库和媒体文件夹中。 它会使您的网站不必要地沉重。
删除产品后删除产品图片的好处 |
1.提高网站性能 |
2. 通过最小化服务器存储来提高存储速度 |
3.保持网站轻量级 |
4. 为进一步上传创造更多空间 |
5.优化店铺数据库 |
对于市场所有者来说,情况要复杂一些。 监控不同供应商上传的所有媒体文件非常困难。 由于供应商可能每天上传大量产品并删除许多现有产品。 反过来,他们的产品图片可能会减少您的服务器空间,这对您的网站性能不利。
在这种情况下,如果用户/供应商删除任何产品,删除所有特色图像和画廊图像将是有益的。
但如果有人在多个帖子中使用相同的图片,就会出现另一个问题。
那么,今天我们将向您展示解决所有这些障碍的解决方案。
删除产品后如何删除 Woocommerce 图像?
在这里,我们将使用钩子: before_delete_post
。 在此处查看有关此挂钩的详细信息。
按照以下步骤在批量删除 WooCommerce 产品期间删除未使用的图像:
- 第一步:创建子主题
- 第 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 产品和产品图片有疑问? 让我们在评论中知道!