Überprüfen Sie, ob Post zum ersten Mal veröffentlicht wird oder ob ein bereits veröffentlichter Post aktualisiert wird

Ich erstelle ein Add-on für ein Ereignismodul, das nach Verfügbarkeit sucht, da in diesem Modul keine function dafür vorhanden war. Jetzt, da ich die Logik aufgebaut habe, gibt es drei E-Mails, die ich senden muss:

Ich habe save_post und publish_post für die ersten beiden süchtig, aber ich möchte eine völlig andere E-Mail gesendet nach der Bearbeitung eines veröffentlichten Posts. Wie kann ich testen, ob der Beitrag bereits veröffentlicht wurde und dies nur eine Bearbeitung ist, im Gegensatz zu der Veröffentlichung zum ersten Mal?

Solutions Collecting From Web of "Überprüfen Sie, ob Post zum ersten Mal veröffentlicht wird oder ob ein bereits veröffentlichter Post aktualisiert wird"

edit_post in edit_post , um Änderungen edit_post . Und casting wp_transition_post_status() einen Blick auf wp_transition_post_status() der bei Einfügungen und Aktualisierungen aufgerufen wird:

 function wp_transition_post_status($new_status, $old_status, $post) { do_action('transition_post_status', $new_status, $old_status, $post); do_action("{$old_status}_to_{$new_status}", $post); do_action("{$new_status}_{$post->post_type}", $post->ID, $post); } 

Auf Publish hookst du ein

  • draft_to_publish ,
  • pending_to_publish und
  • auto-draft_to_publish .

Für Bearbeitungen publish_to_publish in publish_to_publish .

Beispiel

Ein Mini-Plugin, das alle Autoren während der Veröffentlichung oder Bearbeitung benachrichtigt.

 < ?php /** * Plugin Name: (#56779) Notify authors */ add_action( 'transition_post_status', 'wpse_56779_notify_authors', 10, 3 ); function wpse_56779_notify_authors( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status ) return; $subject = 'publish' === $old_status ? __( 'Edited: %s', 'your_textdomain' ) : __( 'New post: %s', 'your_textdomain' ); $authors = new WP_User_Query( array( 'role' => 'Author' ) ); foreach ( $authors as $author ) { wp_mail( $author->user_email, sprintf( $subject, $post->post_title ), $post->post_content // Headers // Attachments ); // Slow down sleep( 5 ); } } 

Benutze das….

 function save_func($ID, $post,$update) { if($update == false) { // do something if its first time publish } else { // Do something if its update } } add_action( 'save_post', 'save_func', 10, 3 );