web-dev-qa-db-fra.com

Supprimer méta conditionnellement après sauvegarde post

Je souhaite mettre à jour/supprimer un méta de publication lorsqu'un message personnalisé (dans ce cas, le type de message personnalisé est "réservation") est mis à jour lors du changement de méta de message. Dans mon cas, si l'utilisateur modifie le message meta booking_status en 'refusé' puis met à jour le message, je souhaite supprimer le message post_meta booking_status immédiatement.

Voici ce que j'ai essayé

add_action( 'save_post', 'booking_status_is_updated' );

function booking_status_is_updated(){
   global $post;
   if($post->post_type =='booking'){

     if(get_post_meta($post->ID,'booking_status',true)=='denied'){
         delete_post_meta($post->ID,'booking_slot');
     }

   }
}

Mais ça ne fonctionne pas ? Comment puis-je le faire?

2
aroSuv
  • Eh bien, utilisez d'abord le crochet correctement. L'identifiant de la publication sera transmis. Vous n'avez pas besoin de $post->ID.
  • Deuxièmement, utilisez le bon crochet. Si vous souhaitez exécuter save_post uniquement pour votre type de réservation, utilisez save_post_booking

Mais sinon, le code fonctionne. Je viens de faire un test rapide.

function booking_status_is_updated($post_id){
  if(get_post_meta($post_id,'booking_status',true)=='denied'){
    delete_post_meta($post_id,'booking_slot');
  }
}
add_action('save_post_booking','booking_status_is_updated');
1
s_ha_dum