Eliminar publicación con todos los archivos adjuntos

2

En mi sitio tengo varios autores, que pueden agregar / editar / eliminar publicaciones personalizadas y cargar (adjuntar) imágenes a esas publicaciones. El problema es que cuando eliminan sus publicaciones, los archivos adjuntos permanecen en el servidor. Por lo tanto, me gustaría deshacerme de todos los archivos adjuntos a la publicación cuando se elimine. ¿Alguien puede compartir y ejemplo cómo se hace?

    
pregunta Kovas 26.06.2011 - 21:09

2 respuestas

3

WP no lo hace de forma predeterminada, ya que no hay ninguna garantía de que los archivos adjuntos todavía no estén siendo utilizados por otras publicaciones.

La lógica básica sería enlazar con delete_post , consultar los archivos adjuntos secundarios y ejecutar wp_delete_attachment() en cada uno.

Hice una búsqueda rápida en el repositorio de complementos y se me ocurrió un pequeño complemento que hace precisamente eso (parece que no se ha mantenido así que prueba antes de usar) - Post Data Delete Advanced .

    
respondido por el Rarst 26.06.2011 - 23:54
2

Escribí la siguiente función que utiliza la lógica sugerida por @rarst en su respuesta.

add_action( 'before_delete_post', function( $id ) {
  $attachments = get_attached_media( '', $id );
  foreach ($attachments as $attachment) {
    wp_delete_attachment( $attachment->ID, 'true' );
  }
} );

¡Ten en cuenta que solo se llamará cuando las publicaciones se eliminen permanentemente de la papelera! Si quieres cambiar este comportamiento, incluye la siguiente línea en tu archivo wp-config.php :

define('EMPTY_TRASH_DAYS', 0);
    
respondido por el That Brazilian Guy 06.10.2017 - 22:14

Lea otras preguntas en las etiquetas