检查SAVE_POST上的值是否已更改

时间:2015-07-03 作者:Picard102

如果分类法等于特定值,则编写函数在save\\u post上向用户发送电子邮件。但是,我只希望在更改值时发生这种情况,而不是每次保存时都发生这种情况。是否有方法比较使用新值更新的值与已更新的值是否相同?

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

  }
}

1 个回复
最合适的回答,由SO网友:Picard102 整理而成

最后,我检查并在每次保存时更新一个新的元值。

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

 }
}

结束

相关推荐