J'essaie de mettre à jour la valeur de la méta d'un type de publication personnalisé lorsqu'un autre type de publication personnalisée est supprimé.
Lorsqu'un space_rental est supprimé, je dois mettre à jour une méta-valeur sur un espace.
Je ne pense pas pouvoir utiliser delete_post
car il se déclenche après la suppression des métadonnées, mais cela ne fonctionne pas non plus pour moi (que ce soit pour supprimer le message ou vider la corbeille).
Voici la fonction et en dessous, la structure des métadonnées pour chaque type de publication.
//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';
}
}
}
}
La méta 'space' post_type est stockée comme ceci:
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
),
);
Ce méta post_type 'space_rental' est stocké comme ceci:
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
);
si vous voulez l'attraper lorsque l'utilisateur supprime (signifie cliquer sur la corbeille sur le post), la solution possible consiste à utiliser trash_post hook
add_action( 'trash_post', 'my_func_before_trash',999,1);
function my_func_before_trash($postid){
//my custom code
}
Il y a un crochet post
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
}