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.

La entrada Cómo eliminar las imágenes asociadas al borrar un producto, etc la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Laura D´Cuero

Copywriter, Redactora de Content SEO.
Laura D´Cuero

Latest posts by Laura D´Cuero (see all)

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

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