web-dev-qa-db-fra.com

Détecter les changements de méta-valeur lorsque post est mis à jour (post_updated)

Dans mon thème, je souhaite créer la fonction voulant que l'auteur en soit informé lorsqu'une valeur de métabox est modifiée.

En fait, j'ai une métabox personnalisée qui parcourt un certain niveau de rôle d'utilisateur (rôle d'utilisateur personnalisé), avec le <option value="<the user's ID>"

J'ai pu le faire en changeant l'auteur avec le code suivant:

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

J'ai essayé d'ajouter get_post_meta( get_the_ID(), 'key_1', true ); mais en cherchant dans le codex le post_updated je ne pouvais pas voir s'il était possible d'appeler $post_before->$meta_key ou $post_after->$meta_key

Y a-t-il un moyen de faire cela? Ou est-ce purement pour les valeurs incorporées?

1

Comme @SamuelElh commenter, voici comment je l'ai résolu:

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