Ecrire une fonction pour envoyer un email à l'utilisateur sur save_post si une taxonomie est égale à une valeur spécifique. Cependant, je souhaite que cela ne se produise que lorsque la valeur est modifiée, et non à chaque sauvegarde. Existe-t-il un moyen de comparer si une valeur est mise à jour avec une nouvelle valeur par rapport à la même valeur qu’elle a déjà?
function status_save_email( $post_id ) {
if ( !wp_is_post_revision($post_id) ) {
$slug = 'sessions';
if ( $slug != $_POST['post_type'] ) { return; }
$status = get_the_terms( $post_id, 'status_tax' );
if ( $status != null ){
foreach( $status as $state ) {
$state_name = $state->name ;
}}
if ( $state_name == 'Rejected' || $state_name == 'Approved' ){
echo "bingo";
}
}
}
Finalement, j'ai vérifié et mis à jour une nouvelle méta-valeur à chaque sauvegarde.
$screen = get_current_screen();
if ( $screen->base == 'post' && $screen->post_type == 'sessions') {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( isset( $_POST['session_status_tax'] ) ) {
$status = $_POST['session_status_tax'];
} else {
$status = '';
}
$prev_term = get_post_meta( $post_id, 'prev_term', 'true' );
if ( $status === 'status-approved' && $status !== $prev_term ) {
write_post_log($post_id, 'Approved' );
send_email( $post_id, 'Approved' );
}
update_post_meta( $post_id, 'prev_term', $status );
}
}