web-dev-qa-db-fra.com

Vérifier si la valeur a changé sur save_post

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";
    }

  }
}
3
Picard102

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 );

 }
}
3
Picard102