Cómo eliminar las imágenes asociadas al borrar un producto, etc

¿No te parece a veces que en WordPress la biblioteca de medios va por libre del editor?

Me refiero a que es curioso que cuando subes una imagen para ilustrar un producto, página o entrada, en la biblioteca de medios aparece como «adjunta» a ese contenido, pero si por algún motivo decides borrar el producto, las imágenes siguen ahí, aunque ya no las necesites.

Esto es especialmente preocupante en caso de las tiendas online, en las que sí o sí las imágenes van asociadas a productos y la mayoría de las veces no son reutilizables.

Pues bien, estás de enhorabuena porque aquí tienes el modo de conseguir que cuando borres producto o lo que sea se borren automáticamente las imágenes adjuntas.

Borrar la imagen destacada al borrar el contenido

Con el siguiente código se borrará solamente la imagen destacada al borrar el producto, etc.

/* Borrar imagen destacada al borrar entrada */
add_action( 'trashed_post', 'ayudawp_borrar_imagen_destacada_con_producto', 20, 1 );
function ayudawp_borrar_imagen_destacada_con_producto( $post_id ) {
 
 // Obtener el ID del tipo de contenido enviado a la papelera
 $post_type = get_post_type( $post_id );
 
 // No ejecutar en otros tipos de contenido
 if ( $post_type != 'product' ) {
 return true;
 }
 
 // Obtener el ID de la imagen destacada
 $post_thumbnail_id = get_post_thumbnail_id( $post_id );

 // Borrar la imagen destacada
 wp_delete_attachment( $post_thumbnail_id, true );
}

Borrar la galería de imágenes y la imagen destacada al borrar el contenido

Si también quieres borrar las imágenes adicionales adjuntas al contenido entonces el código sería este otro:

/* Borrar galeria e imagen destacada al borrar entrada */
add_action( 'trashed_post', 'ayudawp_borrar_imagenes_galeria_destacada_con_producto', 20, 1 );

function ayudawp_borrar_imagenes_galeria_destacada_con_producto( $post_id ) {
 
 // Obtener el ID del tipo de contenido enviado a la papelera
 $post_type = get_post_type( $post_id );
 
 // No ejecutar en otros tipos de contenido
 if ( $post_type != 'product' ) {
 return true;
 }
 
 // Obtener el ID de la imagen destacada
 $post_thumbnail_id = get_post_thumbnail_id( $post_id );

 // Obtener el array del campo personalizado de la galeria 
 $gallery_images = get_field('gallery', $post_id);

 // loop por la galeria 
 foreach ($gallery_images as $gallery_image) {
 
 // Obtener el ID de cada adjunto
 $gallery_id = $gallery_image['id'];

 // Borrar adjuntos
 wp_delete_attachment( $gallery_id, true );
 }
 
 // Borrar imagen destacada
 wp_delete_attachment( $post_thumbnail_id, true );
}

Cómo usar y personalizar estos códigos

Como casi siempre, si quieres usar uno de estos códigos debes añadirlo a tu plugin de personalizaciones o, en su defecto, en el archivo functions.php del tema activo (al final del mismo).

En los ejemplos el tipo de contenido elegido es un producto (product), pero puedes personalizarlo para que actúe sobre otros tipos de contenido, como entradas (post), páginas (page), etc.

Igualmente, con las galerías de imágenes, el campo personalizado es el estándar de las galerías de WordPress (gallery) pero si es otro el que usas, mediante un plugin por ejemplo, simplemente sustitúyelo.

El objetivo final es que cuando envíes a la papelera un producto, entrada, página o lo que sea, le acompañen las imágenes asociadas al mismo.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(7 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

2 comentarios en “Cómo eliminar las imágenes asociadas al borrar un producto, etc”

  1. ¡Hola Fernando!

    Muchas gracias por tus artículos, es contenido de muy buena calidad.

    Me gustaría saber si al eliminar las imágenes con este código, también esta eliminando de la base de datos la información que se pudo haber guardado allí, te pregunto esto pensando en la optimizacion de la página web y sus bases de datos.

    Muchas gracias de nuevo!

    Un saludo,

    Sebastián

  2. hola, a mi lo que me sucedio es que borre una imagen de los medios y me sigue saliendo en las paginas, pero como un error, y no hay manera de que encuentre como quitar esa imagen oscura de la pagina

Deja un comentario

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

 

Ir arriba Ir al contenido