web-dev-qa-db-de.com

Erkennen Sie Metawertänderungen, wenn der Beitrag aktualisiert wird (post_updated)

In meinem Thema möchte ich die Funktion erstellen, dass der Autor benachrichtigt wird, wenn ein Metabox-Wert geändert wird.

Eigentlich habe ich eine benutzerdefinierte Metabox, die eine bestimmte Ebene der Benutzerrolle (benutzerdefinierte Benutzerrolle) mit dem <option value="<the user's ID>" durchläuft.

Ich konnte dies tun, indem ich den Autor mit dem folgenden Code änderte:

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

Ich habe versucht, get_post_meta( get_the_ID(), 'key_1', true ); hinzuzufügen, habe aber im Codex nach dem post_updated gesucht. Ich konnte nicht feststellen, ob es möglich war, $post_before->$meta_key oder $post_after->$meta_key aufzurufen.

Gibt es eine Möglichkeit, dies zu tun? Oder ist es nur für eingebaute Werte?

1

Wie @SamuelElh Kommentar ist dies, wie ich es gelöst habe:

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