Benutzerdefinierte Beitragstyp-Benachrichtigungen

Ich habe einen benutzerdefinierten Post-Typ eingerichtet und alles funktioniert richtig. Der Benutzer kann zur Überprüfung einreichen und ich sehe, dass er im Admin-Bereich aussteht. Wie kann ich mir von WordPress eine E-Mail-Benachrichtigung senden lassen, wenn ein Nutzer einen Beitrag einreicht?

add_action( 'init', 'artwork_feature'); function artwork_feature() { register_post_type( 'artwork', array( 'labels' => array( 'name' => __( 'Artwork' ), 'singular_name' => __( 'Artwork' ) ), 'public' => true, 'exclude_from_search' => false, 'capability_type' => 'artwork', 'supports' => array('custom-fields', 'comments'), 'capabilities' => array( 'publish_posts' => 'publish_artworks', 'edit_posts' => 'edit_artworks', 'edit_others_posts' => 'edit_others_artwork', 'delete_posts' => 'delete_artworks', 'delete_others_posts' => 'delete_others_artwork', 'read_private_posts' => 'read_private_artwork', 'edit_post' => 'edit_artwork', 'delete_post' => 'delete_artwork', 'read_post' => 'read_artwork', ), 'map_meta_cap' => true, 'has_archive' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } 

Solutions Collecting From Web of "Benutzerdefinierte Beitragstyp-Benachrichtigungen"

WordPress verfügt über einen save_post- Hook, bei dem es sich um eine Aktion handelt, die immer dann ausgetriggers wird, wenn ein Post oder eine Seite erstellt oder aktualisiert wird.

Fügen Sie so etwas zu Ihrer functions.php hinzu:

 function my_project_updated_send_email( $post_id ) { // If this is just a revision, don't send the email. if ( wp_is_post_revision( $post_id ) ) return; $post_title = get_the_title( $post_id ); $post_url = get_permalink( $post_id ); $subject = 'A post has been updated'; $message = "A post has been updated on your website:\n\n"; $message .= $post_title . ": " . $post_url; // Send email to admin. wp_mail( 'admin@example.com', $subject, $message ); } add_action( 'save_post', 'my_project_updated_send_email' ); 

Eine Sache zu beachten ist, dass Ihr localhost standardmäßig keine E-Mail an eine externe Quelle sendet – es sei denn, Sie haben es konfiguriert. Es gibt jedoch ein paar Plugins, mit denen Sie über SMTP senden können, so dass Sie problemlos von localhost testen können.

Das obige Beispiel stammt von der save_post Codex Seite, aber zusätzlich zu den oben genannten, würden Sie Filter hinzufügen, um es nur für Ihre benutzerdefinierte Post-Typ und nicht jeden Post, sowie vielleicht nur für eine neue erstellen, anstatt Alle Updates (indem Sie angeben, für welchen Poststatus Sie Benachrichtigungen erhalten möchten) – entscheiden Sie selbst.

Alles Gute,
Kat