ich versuche zu haken, wenn der Beitrag aktualisiert wird, aber alle Haken, die ich versuche, werden nie ausgeführt, außer updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
Ich habe diese add_action('save_post', 'my_function');
ausprobiert, aber es wurde keine ID als Echo ausgegeben, oder vielleicht wird diese Nachricht bereits als Echo ausgegeben, aber nie wiedergegeben, da der Redirect-Header gesendet wird.
Wenn ein Beitrag aktualisiert wird, werden einige Hooks ausgelöst:
'pre_post_update'
ist eine Aktion, die gerade vor der Aktualisierung des Posts ausgelöst wurde. Das übergebene Argument ist 2: $post_ID
und $data
, das ein Array von all den anderen Datenbankspalten von der Pfostentisch'transition_post_status'
ist ein Hook, der bei der Aktualisierung ausgelöst wird und 3 Argumente übergibt: $ new_post_status, $old_post_status
und $post
(Objekt)."{$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. Dokumentation finden hier .'edit_post'
die 2 Argumente übergeben: $post_ID
und $post
(Objekt)'post_updated'
die 3 Argumente übergeben: $post_ID
, $post_after
(Objekt nach dem Update veröffentlichen), $post_before
(Objekt vor dem Update veröffentlichen)"save_post_{$post->post_type}"
, der vom Post-Typ abhängt, z. Für Standardbeiträge ist 'save_post_post'
und für Seiten ist 'save_post_page'
, dieser Hook übergibt 3 Argumente: $post_ID
, $post
(Objekt) und $update
, das ist ein boolescher Wert (wahr oder falsch), der wahr ist, wenn Sie eine Aktualisierung durchführen. Tatsächlich wird dieser Hook auch ausgelöst Wenn ein Beitrag zum ersten Mal gespeichert wird.save_post
' das sowohl beim Update als auch beim ersten Speichern ausgelöst wird und die gleichen 3 Argumente des vorherigen Hooks übergibt.save_post_{$post_type}
' wird sowohl beim Aktualisieren als auch beim ersten Speichern ausgelöst und übergibt dieselben ersten beiden Argumente des vorherigen Hooks.wp_insert_post
' , das sowohl beim Aktualisieren als auch beim ersten Speichern ausgelöst wird, 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, wenn sie "manuell" mit den Funktionen wp_update_post
oder wp_insert_post
aktualisiert werden.
Wenn der Beitrag über Admin-Seiten aktualisiert wird, werden zusätzliche Hooks ausgelöst. Ein Beispiel ist'update_post_redirect'
oder'post_updated_messages'
. (Verwendungsbeispiele finden Sie unter this und this WPSE-Antworten).
Beachten Sie, dass Sie, wenn Sie ein Hook-Argument verwenden möchten, dies nicht das erste ist, das Sie explizit im add_action
-Aufruf deklarieren müssen.
Z.B. Wenn Sie das '$update'
-Argument (das ist das dritte) des 'save_post'
-Hooks verwenden möchten, müssen Sie 3
als $accepted_args
-Parameter für add_action
hinzufügen ( siehe docs ):
// 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 zu Timing: Sie müssen sicher sein, dass add_action
bevor heißt, da die Aktion sonst ausgelöst wird.
Z.B. 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.
Warum nicht post_updated_messages
einbinden? Auf diese Weise können Sie diese Nachricht genau wie den aktualisierten WordPress-Standardpost anzeigen.
add_filter('post_updated_messages', 'your_message');
function your_message(){
}
Hier finden Sie ein Beispiel:
http://codex.wordpress.org/Function_Reference/register_post_type
unter post_updated_messages