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_ID
und $data
das 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_status
und $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_ID
und $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 $update
das 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_post
oder, 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_action
Aufruf deklarieren müssen .
Wenn Sie beispielsweise das '$update'
Argument (das ist das dritte) des Hooks verwenden möchten, 'save_post'
müssen Sie es 3
als $accepted_args
Parameter 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_action
Aufruf 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.