Как удалить неиспользуемые изображения WooCommerce с вашего рынка Dokan

Опубликовано: 2022-04-06

Ищете решения для удаления изображений при массовом удалении продуктов WooCommerce?

Занимаясь онлайн-бизнесом, вы должны быть бдительны. Вы должны быть в курсе всего, например, модных тенденций, новых тенденций и устаревших продуктов вашего магазина. Вы можете обновлять свой сайт последними продуктами, которые с большей вероятностью будут продаваться.

Для того, чтобы поддерживать ваш магазин в актуальном состоянии, иногда вам необходимо удалить некоторые товары, которые давно не продаются, или товары, которые не соответствуют сезону. Для магазина WooCommerce вы можете легко сделать это, используя настройку WooCommerce по умолчанию или выполнив команду SQL.

Но проблема в том, что WordPress не удаляет медиафайлы при удалении поста. Это может быть серьезной проблемой для сайта электронной коммерции или торговой площадки с тысячами высококачественных изображений.

В следующем блоге вы узнаете, как удалить изображения WooCommerce из галереи при удалении продукта как для одного магазина, так и для торговой площадки с несколькими поставщиками.

Почему вы должны удалить изображения продукта WooCommerce после удаления этого продукта

Вам нужно загрузить множество продуктов с тысячами связанных изображений для вашего магазина электронной коммерции. А иногда вполне нормально удалить некоторые продукты с вашего сайта по тем или иным причинам. После удаления продукта, если вы проверите свою медиатеку, вы найдете все те изображения, которые использовались для ваших удаленных продуктов.

Это означает, что после удаления товара в WooCommerce система удаляет большую часть данных, связанных с ним. Но изображение этого продукта останется в базе данных и в папке с медиафайлами. Это сделает ваш сайт излишне тяжелым.

Преимущества удаления изображений продукта после удаления этого продукта
1. Улучшить производительность сайта
2. Увеличьте скорость магазина, уменьшив объем хранилища на сервере.
3. Сделайте сайт легким
4. Освободите больше места для дальнейшей загрузки
5. Оптимизируйте базу данных магазина

Для владельцев торговых площадок сценарий немного сложнее. Очень сложно отслеживать все медиафайлы, загруженные разными поставщиками. Поскольку поставщик, возможно, загружает большое количество продуктов каждый день, а также удаляет многие из существующих. В свою очередь, их изображения продуктов могут уменьшить пространство на вашем сервере, что не очень хорошо для производительности вашего сайта.

В этом случае было бы полезно удалить все рекомендуемые изображения и изображения из галереи, если пользователь/поставщик удалит какой-либо продукт.

Но здесь может возникнуть другая проблема, если кто-то использует одни и те же изображения в нескольких постах.

Что ж, сегодня мы покажем вам решения для преодоления всех этих препятствий.

Как удалить изображения Woocommerce после удаления продукта?

массовое удаление продуктов 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 и удалите продукт. Он также удалит связанные изображения.

удалить изображения

Как удалить изображения продуктов WooCommerce из Dokan Marketplace

Теперь мы покажем вам, как удалить изображения 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!

к вам

Может быть несколько ситуаций, когда вам нужно массово удалить продукты WooCommerce. И это не составит труда для пользователя WordPress. Но вы сталкиваетесь с трудностями, когда после удаления товара в медиатеке остаются изображения связанных товаров.

Приведенное выше руководство поможет вам включить автоматический процесс удаления изображений при удалении продукта в WooCommerce.

У вас все еще есть вопросы о том, как массово удалять продукты WooCommerce и изображения продуктов с помощью хуков действий? Дайте нам знать об этом в комментариях!

Подпишитесь на блог weDevs

Рассылаем еженедельную рассылку, никакого спама точно