web-dev-qa-db-ja.com

投稿が更新されたときにメタ値の変化を検出する(post_updated)

私のテーマでは、メタボックス値が変更されたときに作者に通知される関数を作成したいと思います。

事実上、私は<option value="<the user's ID>"で、あるレベルのユーザーロール(カスタムユーザーロール)をループするカスタムメタボックスを持っています。

私は以下のコードで作者を変えることによってこれをすることができました:

function check_values($post_ID, $post_after, $post_before){
    if( $post_after->post_author !== $post_before->post_author ) {
        $author = $post_after->post_author; /* Post author ID. */
         $name = get_the_author_meta( 'display_name', $author );
         $email = get_the_author_meta( 'user_email', $author );

         $title = $post_after->post_title;
         $permalink = get_permalink( $ID );
         $edit = get_edit_post_link( $ID, '' );
         $to[] = sprintf( '%s <%s>', $name, $email );
         $subject = sprintf( 'Published: %s', $title );
         $message = sprintf ('Congratulations, %s! Your article “%s” has been published.' . "\n\n", $name, $title );
         $message .= sprintf( 'View: %s', $permalink );
         $headers[] = '';
         wp_mail( $to, $subject, $message, $headers );
    }
}
add_action( 'post_updated', 'check_values', 10, 3 );

get_post_meta( get_the_ID(), 'key_1', true );を追加しようとしましたが、post_updatedのコーデックスを見てみました$post_before->$meta_keyまたは$post_after->$meta_keyを呼び出すことが可能かどうかわかりませんでした

これを行う方法はありますか?それとも作り付けの値のためだけにですか?

1

@SamuelElhのコメントのように、これが私がそれを解決した方法です:

add_action('updated_post_meta', 'check_meta_change', 0, 4);
function check_meta_change($meta_id, $post_id, $meta_key, $meta_value) {
    if( '<ENTER YOUR META KEY>' == $meta_key ) {
        // do stuff
    }
}
0