Eliminar las imágenes al borrar un producto en WooCommerce

Eliminar las imágenes al borrar un producto en WooCommerce

Tabla de contenido

Eliminar las imágenes al borrar un producto en WooCommerce es clave para evitar que tu biblioteca de medios se llene de archivos innecesarios. Por defecto, al eliminar un producto, sus imágenes —como la destacada o las de la galería— permanecen en el servidor, lo que puede afectar el rendimiento y dificultar la gestión del sitio.

Por eso, en este artículo quiero compartir contigo un fragmento de código, junto con su explicación paso a paso, que te permitirá eliminar las imágenes al borrar un producto en WooCommerce. Y si prefieres una solución más sencilla o no te sientes del todo cómodo tocando código, también podrás descargar un pequeño plugin que incluye esta funcionalidad lista para usar en tu WordPress.

Por qué automatizar la eliminación de imágenes

  • Eliminar automáticamente las imágenes asociadas a los productos que ya no existen trae varias ventajas:
  • Ahorro de espacio: Se eliminan archivos que ya no se necesitan.
  • Mejor rendimiento: Menos archivos significa menos peso en el servidor.
  • Gestión ordenada: Evita una biblioteca de medios saturada y difícil de manejar.
  • Evita errores humanos: Al automatizar, se reduce el riesgo de olvidar borrar manualmente.

Código para eliminar las imágenes al borrar un producto en WooCommerce

Este fragmento de código se puede añadir en el archivo functions.php del tema hijo, o usando un plugin como Code Snippets, que recomiendo para gestionar fragmentos de forma segura.

/* 
// Eliminar las imágenes al borrar un producto en WooCommerce 
*/

add_action('before_delete_post', 'sw_eliminar_imagenes_producto', 10, 1);

function sw_eliminar_imagenes_producto($post_id) {
    $producto = wc_get_product($post_id);

    if (!$producto) {
        return;
    }

    // Eliminar imagen destacada
    $id_imagen_destacada = $producto->get_image_id();
    if (!empty($id_imagen_destacada)) {
        wp_delete_attachment($id_imagen_destacada, true);
    }

    // Eliminar imágenes de la galería
    $ids_galeria = $producto->get_gallery_image_ids();
    if (!empty($ids_galeria)) {
        foreach ($ids_galeria as $id_imagen) {
            wp_delete_attachment($id_imagen, true);
        }
    }
}

Qué hace este código

  • Utiliza el hook before_delete_post para detectar cuando se elimina un producto.
  • Recupera el producto con wc_get_product.
  • Obtiene el ID de la imagen destacada y las imágenes de galería.
  • Usa wp_delete_attachment() para eliminar permanentemente las imágenes, incluyendo sus versiones en miniatura.

⚠️ Consideraciones importantes

  • Las imágenes se eliminan definitivamente, no van a la papelera.
  • No se comprueba si las imágenes están usadas en otros productos o entradas, así que hay que tener cuidado con imágenes compartidas.
  • Es recomendable hacer pruebas primero en un entorno de desarrollo o staging y tener siempre una copia de seguridad.

Algunas preguntas frecuentes

¿Existe algún plugin que elimine automáticamente las imágenes al borrar un producto?

No hay un plugin dedicado exclusivamente a esta función, pero herramientas como Media Cleaner o WP-Optimize permiten identificar y eliminar archivos no utilizados. Aun así, suelen requerir intervención manual. Este snippet, en cambio, automatiza el proceso por completo.

¿Qué sucede si una imagen que se va a eliminar también se usa en otro producto?

El código no comprueba si la imagen está compartida con otros productos o entradas. Si lo está, también será eliminada. Por eso, conviene usar imágenes únicas por producto o desarrollar una solución más avanzada que verifique su uso antes de borrarla.

¿Puedo recuperar las imágenes si me equivoco?

No. Las imágenes se eliminan de forma permanente y no se envían a la papelera. Se recomienda tener siempre copias de seguridad activas por si necesitas restaurar contenido eliminado por error.

¿Este código afecta a productos que ya han sido eliminados?

No, el código solo actúa cuando se elimina un producto desde ahora en adelante. No eliminará imágenes asociadas a productos borrados anteriormente.

¿Es compatible con cualquier tema y versión de WooCommerce?

Sí, el snippet usa funciones nativas de WordPress y WooCommerce, por lo que es compatible con la mayoría de temas bien desarrollados. Aun así, si estás usando plugins o temas que alteran el comportamiento de productos o medios, es mejor probar antes.

¿Se pueden eliminar también las imágenes de las variaciones al borrar un producto variable?

Sí. El código base elimina únicamente la imagen destacada y las de la galería del producto principal. Sin embargo, si trabajas con productos variables que tienen imágenes propias por variación, puedes ampliar el snippet para que también borre esas imágenes.

Aquí te dejo una versión mejorada del código que elimina las imágenes del producto principal y las de cada variación:

add_action('before_delete_post', 'sw_eliminar_imagenes_producto_y_variaciones', 10, 1);

function sw_eliminar_imagenes_producto_y_variaciones($post_id) {
    if (get_post_type($post_id) !== 'product') {
        return;
    }

    $producto = wc_get_product($post_id);

    if (!$producto) {
        return;
    }

    // Eliminar imagen destacada
    $id_imagen_destacada = $producto->get_image_id();
    if (!empty($id_imagen_destacada)) {
        wp_delete_attachment($id_imagen_destacada, true);
    }

    // Eliminar imágenes de la galería
    $ids_galeria = $producto->get_gallery_image_ids();
    if (!empty($ids_galeria)) {
        foreach ($ids_galeria as $id_imagen) {
            wp_delete_attachment($id_imagen, true);
        }
    }

    // Eliminar imágenes de variaciones
    if ($producto->is_type('variable')) {
        $variaciones = $producto->get_children();
        foreach ($variaciones as $variacion_id) {
            $imagen_variacion_id = get_post_thumbnail_id($variacion_id);
            if (!empty($imagen_variacion_id)) {
                wp_delete_attachment($imagen_variacion_id, true);
            }
        }
    }
}

¿Prefieres no tocar código?

Si no te sientes cómodo editando archivos o prefieres una solución rápida, puedes descargar este plugin que ya incluye el código necesario para eliminar automáticamente las imágenes del producto y sus variaciones al borrarlo en WooCommerce. Solo tienes que instalarlo como cualquier otro plugin desde tu panel de WordPress.

Bonus útil si trabajas con fragmentos de código

Si aún no conoces todas las ventajas de Code Snippets para la inclusión de fragmentos personalizados en WordPress, es una herramienta muy práctica que vale la pena tener en cuenta. Te permite gestionar tus códigos sin necesidad de modificar el archivo functions.php, con opciones para activarlos solo en el frontend, backend o bajo condiciones específicas. Y si usas la versión Pro, puedes organizarlos por carpetas, exportarlos fácilmente y mucho más.

👉 Puedes conocer más y ver todas sus funciones en el sitio oficial: codesnippets.pro

Picture of Sobre el autor:<br>Sebastián echeverri Jaramillo - Sebasweb

Sobre el autor:
Sebastián echeverri Jaramillo - Sebasweb

Apasionado de WordPress, diseñador web y creador de contenido. Ayudo a emprendedores y negocios a construir su presencia online con sitios web funcionales y bien optimizados. Fundador de SEBASWEB, donde comparto tutoriales, guías y recursos sobre desarrollo web.

Enamorado de mis dos hijos y mi esposa, quienes son el motor de mi vida. Me encanta la fotografía y disfruto compartir conocimientos con profesionales de los sectores en los que trabajo. Siempre explorando nuevas herramientas digitales y tendencias del mundo web.

Sígueme en YouTube para más consejos sobre WordPress y desarrollo web.

Comparte este artículo

¿Que tal te pareció este artículo?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
Responsable: Sebastián Echeverri (portafolio@salmon-clam-238724.hostingersite.com)
Fin del tratamiento: Moderación de comentarios para evitar spam
Legitimación: Tu consentimiento
Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
Derechos: Acceso, rectificación, portabilidad, olvido

Recomiendo:

Sobre la afiliación…

Este blog se mantiene en parte gracias a enlaces de afiliación, que me generan una pequeña comisión sin costo adicional para ti. Solo recomiendo productos que he probado y confío. ¡Mil gracias por tu apoyo, significa muchísimo para mí!

También te podría interesar ver estos artículos

Cómo Ocultar el Precio Fijo de Envío en WooCommerce Cuando el Pedido es Gratis

En el mundo del comercio electrónico, ofrecer una experiencia de compra fluida y atractiva es fundamental para aumentar...

Recordar la información del cliente al volver a pagar en WooCommerce

Cuando se trata de comercio electrónico, cada pequeño detalle cuenta para que la experiencia del usuario sea lo...

Filtrar productos con rebaja en la administración de WooCommerce

Si manejas una tienda en WooCommerce con muchos productos, seguro en algún momento quisiste ver rápidamente cuáles tienen...

Cupón de descuento en la URL con Woocommerce

Implementar un cupón de descuento en la URL con WooCommerce es una estrategia sumamente efectiva para atraer más...

Desactivar los correos electrónicos al administrador de cambio de contraseña de los usuarios (WooCommerce)

Si gestionas una tienda online con WooCommerce, seguro que ya estás acostumbrado a recibir montones de correos cada...

Excluir correos en un cupón de WooCommerce con código

En WooCommerce, los cupones son una herramienta esencial para aumentar las ventas y fomentar la fidelidad de los...

Algunas plataformas con las que trabajo

Suscríbete y aprende gratis

¿Te apasiona el mundo web? Únete a la newsletter y recibe en tu correo un pequeño resumen donde hablo sobre WordPress, diseño y desarrollo web.