Wenn ein Beitrag aktualisiert wird, werden einige Hooks ausgelöst:
'pre_post_update'ist eine Aktion, die unmittelbar vor der Aktualisierung des Posts ausgelöst wird. Das übergebene Argument ist 2: $post_IDund $datadas ist ein Array aller anderen Datenbankspalten der Post-Tabelle
'transition_post_status'ist ein Hook, der beim Update ausgelöst wird und 3 Argumente übergibt: $ new_post_status $old_post_statusund $post(object).
- Dann gibt es noch zwei andere Übergangshooks, die aber dynamisch benannt sind. Dies bedeutet, dass die effektive Aktion vom alten und vom neuen Beitragsstatus abhängt.
"{$old_status}_to_{$new_status}"und "{$new_status}_{$post->post_type}". Übergeben Sie zuerst das einzige Post-Objekt als Argument, die zweite Übergabe die Post-ID und das Post-Objekt. Finden Dokumentation hier .
'edit_post'die 2 Argumente übergeben: $post_IDund $post(Objekt)
'post_updated'dass Pass 3 Argumente $post_ID, $post_after(post - Objekt nach dem Update), $post_before(post - Objekt vor der Aktualisierung)
- Ein weiterer dynamischer Haken:
"save_post_{$post->post_type}"die auf Post - Typ abhängig ist , zB für Standard Beiträge ist 'save_post_post'und für die Seiten ist 'save_post_page', wobei dieser Haken Pass 3 Argumente: $post_ID, $post(Objekt) und $updatedas ist ein boolean (wahr oder falsch) , die wahr ist , wenn Sie ein Update durchführen, in Tatsache ist, dass dieser Haken auch ausgelöst wird, wenn ein Beitrag zum ersten Mal gespeichert wird.
- '
save_post' wird sowohl beim Update als auch beim ersten Speichern ausgelöst und übergibt die gleichen 3 Argumente des vorherigen Hooks.
- '
save_post_{$post_type}' wird sowohl beim Aktualisieren als auch beim ersten Speichern ausgelöst und übergibt dieselben ersten beiden Argumente des vorherigen Hooks.
- Schließlich haben Sie '
wp_insert_post' , das wird sowohl beim Update als auch beim ersten Speichern ausgelöst, und übergeben die gleichen 3 Argumente der vorherigen 2 Hooks.
Diese Hooks werden jedes Mal ausgelöst, wenn ein Beitrag aktualisiert wird, sowohl über die Administrationsseiten im Backend als auch über die Funktionen wp_update_postoder, wenn sie "manuell" aktualisiert werden wp_insert_post.
Wenn der Beitrag über Admin-Seiten aktualisiert wird, werden zusätzliche Hooks ausgelöst. Ein Beispiel ist 'update_post_redirect'oder 'post_updated_messages'. (Siehe diese und diese WPSE-Antwort für Verwendungsbeispiele).
Beachten Sie, dass, wenn Sie ein Hook-Argument verwenden möchten, dies nicht das erste ist, das Sie explizit beim add_actionAufruf deklarieren müssen .
Wenn Sie beispielsweise das '$update'Argument (das ist das dritte) des Hooks verwenden möchten, 'save_post'müssen Sie es 3als $accepted_argsParameter hinzufügen add_action( siehe Dokumentation ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
Letzter Hinweis zum Timing : Sie müssen sicher sein, dass der add_actionAufruf erfolgt, bevor die Aktion ausgelöst wird. Andernfalls wird keine Aktion ausgeführt.
ZB dieser Code:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
wird nichts tun, da die Aktion hinzugefügt wird, nachdem der Hook ausgelöst wurde. Hier ist es einfach zu erkennen, in der realen Welt ist Code nicht immer so.
save_post, ist das hier ein Tippfehler, oder war das in Ihrem ursprünglichen Code? Aktivieren Sie außerdem das Debuggen während der Entwicklung.