it-swarm.com.de

Vor dem Löschen eines Beitrags

Ich versuche, den Wert 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 Leerzeichen aktualisieren.

Ich glaube nicht, dass ich delete_post verwenden kann, da er nach dem Löschen der Metadaten ausgelöst wird, aber dies funktioniert auch nicht bei mir (entweder beim Löschen des Posts oder beim Leeren des Mülls).

Hier ist die Funktion und darunter die Struktur der Metadaten für jeden Beitragstyp.

//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';
        }
    }
}
}

Das Meta 'space' post_type 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
);
1
Eckstein

wenn Sie es beim Löschen durch den Benutzer abfangen möchten (dh, wenn Sie auf den Post klicken), können Sie den Haken trash_post verwenden

add_action( 'trash_post', 'my_func_before_trash',999,1);

function my_func_before_trash($postid){
        //my custom code
}
2
sdx11

Es gibt einen Mülleimer Haken

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
}
0
Tunji