En este artículo te mostramos cómo borrar las imágenes (y todo lo demás) de un POST (o ENTRADA) y hasta de una CUSTOM POST TYPE(CPT), al eliminar dicha 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 publicaciones y eventos específicos o en la venta de ganado/caballos por ejemplo?
Nos encontramos con muchas entradas únicas(un caballo es único) 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 a medida que avanza el tiempo.
Si bien muchos alojamientos actuales tienen almacenamiento “ilimitado” a la hora de hacer backups, pero… cada mega cuenta. Y tener imágenes que no se utilizarán más no tiene mucho sentido.
Por ello te mostraremos cómo hacerlo en cada caso.
1. ¿CÓMO BORRAMOS ESTAS IMÁGENES AL ELIMINAR UN POST/ENTRADA (ordinaria)?
Se hace la mención que es un POST o ENTRADA ordinaria porque es lo más común en WordPress. Y se recuerda que debe hacerse un BACKUPS de todo el sitio antes de ahcer algún cambio en el código fuente.
Puen bién, se hace con un pequeó código, que se ingresa el última línea del archivo: functions.php
//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.
2. ¿SI QUEREMOS QUE FUNCIONE EN UN CUSTOM POST TYPE?
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 'caballos' add_action( 'before_delete_post', 'delete_all_attached_media' ); function delete_all_attached_media( $post_id ) { if( get_post_type($post_id) == "caballos" ) { $attachments = get_attached_media( '', $post_id ); foreach ($attachments as $attachment) { wp_delete_attachment( $attachment->ID, 'true' ); } } }
También podemos hacerlo con Woocommerce, cambiando “caballos” por “product”
TOMÁ EN CUENTA:
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. Es decir, se tiene que VACIAR la Papelera.
Espero que este contenido te haya gustado y sea de utilidad, favor recuerda que debes compartir este conocimiento con otros.
0 comentarios