Löschen Sie den Post mit allen angehängten Dateien

Auf meiner Website habe ich mehrere Autoren, die benutzerdefinierte Beiträge hinzufügen / bearbeiten / löschen und Bilder an diese Beiträge hochladen (anhängen) können. Das Problem ist – wenn sie ihre Beiträge löschen, bleiben Anhänge auf dem Server. Daher möchte ich alle Dateien löschen, die an den Post angehängt sind, wenn er gelöscht wird. Kann jemand teilen und wie es gemacht wird?

Solutions Collecting From Web of "Löschen Sie den Post mit allen angehängten Dateien"

WP tut das standardmäßig nicht, da es keine Garantie gibt, dass Anhang nicht immer noch von einem anderen Post verwendet wird.

Grundlegende Logik wäre es, in delete_post , nach delete_post abzufragen und wp_delete_attachment() auf jedem wp_delete_attachment() .

Ich habe schnell im Plugin-Repository gesucht und kam mit winzigen Plugin, das genau das tut (scheint nicht gepflegt, so testen Sie vor der Verwendung) – Post Data Delete Advanced .

Ich schrieb die folgende function, die die von @rst in seiner Antwort vorgeschlagene Logik verwendet.

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

Beachten Sie, dass es nur aufgerufen wird, wenn die Beiträge dauerhaft aus dem Papierkorb gelöscht werden! Wenn Sie dieses Verhalten ändern möchten, wp-config.php die folgende Zeile in Ihre Datei wp-config.php :

 `define('EMPTY_TRASH_DAYS', 0);`