So löschen Sie Anlagen, die mit benutzerdefiniertem Feldtyp verknüpft sind, wenn sich die Post-Eigenschaft ändert

Ich habe eine WordPress-Website mit Autos, die ein benutzerdefiniertes Feld namens “Deal-Typ” haben. Dieses Feld kann entweder “verkaufen” oder “verkauft” werden.

Die “verkaufenden” Autos haben ein benutzerdefiniertes Feld namens “Hauptbild”, an das ein einzelnes Bild angehängt ist, und ein anderes namens “Galerie” mit mehreren Autofotos als Anhang.

Wenn der Website-Administrator ein “verkaufendes” Auto in “verkauft” ändert, muss ich alle dieser Galerie zugeordneten Anhänge löschen, um Platz zu sparen (aber ich muss den Anhang im Feld “Hauptbild” hinzufügen).

Gibt es einen Haken, um zu erkennen, dass das benutzerdefinierte Feld “Abschlusstyp” zu “verkauft” geändert wurde und das Löschen aller Anlagen, die dem benutzerdefinierten Feld “Galerie” zugeordnet sind, austriggers?

Zusätzliche Informationen: Ich verwende die Advanced Custom Fields Pro-Version, um die benutzerdefinierten Felder zu erstellen.

Solutions Collecting From Web of "So löschen Sie Anlagen, die mit benutzerdefiniertem Feldtyp verknüpft sind, wenn sich die Post-Eigenschaft ändert"

Sie können den save_post Hook verwenden.

 add_action( 'save_post', 'mytheme_my_post_just_updated' ); function mytheme_my_post_just_updated($post_id){ $deal_type = get_field($post_id, 'deal_type'); if($deal_type == 'sold'){ $gallery = get_field($post_id, 'gallery');// This bit and the next few lines will depend on how you've set up the custom field. // Fast forward a few lines... foreach($images as $image){ // I'm assuming that $images is an array of attachment_ids, but will depend on how you've used ACF to create the custom field wp_delete_attachment($image, true); // args are attachment_id and whether or not to bypass trash. } } } 

Fügen Sie den obigen Code in die functions.php Ihres Themes ein.

Mehr zu wp_delete_attachment()https://codex.wordpress.org/Function_Reference/wp_delete_attachment