Vor dem Löschen des Beitrags

Ich versuche, den Wert des Metas eines benutzerdefinierten Beitragstyps zu aktualisieren, wenn ein anderer benutzerdefinierter Beitragstyp gelöscht wird.

Wenn ein Space_Rental gelöscht wird, muss ich einen Meta-Wert für ein Space aktualisieren.

Ich glaube nicht, dass ich delete_post verwenden delete_post weil es nach dem Löschen der Metadaten delete_post , aber das funktioniert auch nicht für mich (entweder beim Löschen des Posts oder beim Leeren des Papierkorbs).

Hier ist die function und darunter ist die Struktur der Metadaten für jeden Post-Typ.

 //When a space_rental is deleted, we release the space slots they had saved add_action( 'before_delete_post', 'tps_delete_space_rental' ); function tps_delete_space_rental( $postid ){ if (get_post_type($postid) != 'space_rental') { return; } //Loop through the selected slots in the rental $selectedSlots = get_post_meta($postid, 'selectedSlots', true); foreach ($selectedSlots as $slot) { $spaceSlots = get_post_meta($slot['spaceid'], 'allSlots', true); //Loop through the slots in the space and find the ones that have the rentalID set to the deleted post foreach ($spaceSlots as $sSlot) { if($postid == $sSlot['details']['rentalID']) { $sSlot['details']['slotStatus'] = 'open'; } } } } 

Der ‘space’ post_type meta wird wie folgt gespeichert:

 allSlots => array( 'timestamp' => '123456789', //timestamp representing this slot 'details' => array( 'slotStatus' => 'open', //this is either open or filled 'slotUser' => 123, //The ID of the user who owns the rental using this slot 'rentalID' => 345, //The post_id of the 'space_rental' that is using this slot ), ); 

Dieses ‘space_rental’-post_type-Meta wird wie folgt gespeichert:

 selectedSlots => array( 'spaceSlots' => array( 123456789, 654321987, 9876432654, etc...,// An array of timestamps in this rental ), 'spaceid' => 789, //The post_id of the 'space' where this rental is ); 

Solutions Collecting From Web of "Vor dem Löschen des Beitrags"

Wenn Sie es beim Löschen des Benutzers abfangen wollen ( dh klicken Sie auf Papierkorb auf Post), dann ist es möglich, trash_post hook zu verwenden

 add_action( 'trash_post', 'my_func_before_trash',999,1); function my_func_before_trash($postid){ //my custom code } 

Es gibt einen Mülleimerhaken

 add_action( 'trash_post', 'my_func' ); function my_func( $postid ){ // We check if the global post type isn't ours and just return global $post_type; if ( $post_type != 'my_custom_post_type' ) return; // My custom stuff for deleting my custom post type here }