Borrar imágenes al borrar una entrada en tu web con WordPress

Por Noticias0

borrar-imagen-destacada-al-borrar-post-1024x507.jpg

Te mostramos como borrar las imágenes de un post o CPT al eliminar la entrada

Cuando trabajas en WordPress y eliminás una entrada o una página o cualquier otro contenido, las imágenes adjuntas a ese contenido quedan guardadas en la librería de imágenes. Esto puede ser útil para utilizar las mismas imágenes para otro contenido.

¿Pero que pasa si se utiliza WordPress como gestor de un sitio web de venta de vehículos o un sitio web para inmobiliarias por ejemplo?

Nos encontramos con muchas entradas únicas en las que no tienen sentido mantener una imagen en la biblioteca, ya que al quitar la entrada no vamos a volver a utilizar la imagen, ya que son únicas para cada contenido.

Y si la carga es periódica, el tamaño de nuestro sitio web puede ser muy grande.

Si bien muchos alojamientos actuales tienen almacenamiento «ilimitado» a la hora de hacer backups, cada mega cuenta. Y tener imágenes que no se utilizarán más no tiene mucho sentido.

Ahora bien, ¿cómo borramos estas imágenes al eliminar el post?

Sencillo, con un pequeño código en nuestro archivo functions.php (recordar hacer backups antes de modificar cualquier archivo o contenido en nuestro sitio web)

//Borrar imágenes adjuntas al borrar la entrada
add_action( 'before_delete_post', function( $id ) {
  $attachments = get_attached_media( '', $id );
  foreach ($attachments as $attachment) {
    wp_delete_attachment( $attachment->ID, 'true' );
  }
} );

El único requisito es que los adjuntos solo se borrarán cuando el contenido se haya borrado del todo, no si está en la papelera.

¿Y si lo que queremos es que solamente funcione para un contenido particular?

En este caso tendrías que personalizar un poco el código anterior, para especificar a qué tipos de contenido se aplicará la acción:

//Borrar imágenes adjuntas al borrar la entrada cuyo Custom post type sea 'vehiculos'
add_action( 'before_delete_post', 'delete_all_attached_media' );
function delete_all_attached_media( $post_id ) {
  if( get_post_type($post_id) == "vehiculos" ) {
    $attachments = get_attached_media( '', $post_id );
    foreach ($attachments as $attachment) {
      wp_delete_attachment( $attachment->ID, 'true' );
    }
  }
}

También podemos hacerlo con Woocommerce, cambiando «vehiculos»  por «product»

 

Comenta

Tu Email no será publicado. Campos requeridos *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.