J'essaie d'ajouter un champ personnalisé event_month lorsqu'un article est publié ou enregistré. J'utilise l'action save_post et récupère le contenu d'un champ personnalisé contenant la date et tente de le stocker dans un champ personnalisé distinct avec uniquement le mois. Cela fonctionne parfaitement lorsque vous enregistrez un article déjà créé. J'ai montré mon code ci-dessous.
add_action('save_post', 'update_event_date');
function update_event_date($post_id){
$post_type = get_post_type($post_id);
$event_datee = get_post_meta($post_id, '_EventStartDate', true);
if ($post_type == 'tribe_events'){
$month = date("m",strtotime($event_datee));
update_post_meta($post_id, 'event_month', $month);
}
}
Le problème se pose lors de la création d'un nouveau poste. Je pense que cela est dû au fait que l'action est déclenchée avant la création de la méta _EventStartDate
et que, par conséquent, le mois ne peut en être déduit.
Le hook se déclenche correctement et comme prévu lors de l'enregistrement/la mise à jour d'un article, mais ne récupère pas correctement le mois dans la méta lors de la création d'un nouvel article.
J'apprécierais vraiment si quelqu'un pouvait me donner des conseils.
Vous pouvez accrocher une action post_updated
si vous souhaitez accéder aux données de la publication après leur publication. Ce hook transmet l'ID de la publication, son objet de publication inondé et son objet de publication mis à jour.
add_action( 'post_updated', 'update_event_date', 10, 3 );
function update_event_date( $post_id, $post_after, $post_before ){
$post_type = get_post_type( $post_id );
$event_datee = get_post_meta( $post_id, '_EventStartDate', true );
if ( $post_type == 'tribe_events' ) {
$month = date( "m",strtotime( $event_datee ) );
update_post_meta( $post_id, 'event_month', $month );
}
}
Utilisez pre_post_update
au lieu de save_post
Explication complète ici