Ich suche nach einem Admin-Hook für Beiträge, der ausgelöst wird, nachdem der Beitrag gespeichert wurde. Das Problem: Die save_post
enthält nicht die bereits geänderten Daten zum Post-Objekt. Die neuen Änderungen sind nur in der zu finden $_POST
Reihe. Aber ich brauche eine Möglichkeit, den Permalink zu einer externen API einmal zu aktualisieren post_name
Änderungen. Aber es wird nicht funktionieren, da die $post
Objekt ist immer noch das alte vor der Speicheraktion.
WordPress-Post-Save/Edit-Post-Hook
Keks setzen
Sie sollten in der Lage sein, sich einzuklinken, nachdem der Beitrag mit dem Prioritätsargument aktualisiert wurde (in diesem Beispiel auf 20 gesetzt):
add_action( 'save_post', 'your_function', 20, 1 );
function your_function( $post_id ) {
// this should be the updated post object
$post = get_post( $post_id );
}
Ich denke, die geeignetste Methode ist, die alten Werte aus der Datenbank abzufragen und die Werte damit zu vergleichen $_POST
Array-Werte.
Hier ist der Link, der Ihnen helfen soll, Werte aus der Datenbank zu lesen.
http://codex.wordpress.org/wpdb#query_-_Run_Any_Query_on_the_Database
PS: Diesen Vergleich sollten Sie natürlich “bevor” Sie die neuen Werte in der Datenbank speichern.
Gleb Kemarski
Seit WordPress 3.0.0 ist die post_updated
Haken ist vorhanden. Es hilft zu wissen, was sich in der Post nach dem Update geändert hat. Sie können verwenden das Beispiel im WP Codex als Beispiel.
add_action( 'post_updated', 'check_updated_post_name', 10, 3 );
function check_updated_post_name( $post_ID, $post_after, $post_before ) {
if ( $post_after->post_name != $post_before->post_name ) {
// do what you need
}
}
Und wenn gerade ein Beitrag eingefügt wurde, können Sie ihn verwenden save_post
oder save_post_{$post->post_type}
Haken. Überprüfen Sie den Wert des dritten Arguments, um sicherzustellen, dass der Beitrag neu ist.
add_action( 'save_post', 'check_new_post_name', 10, 3 );
function check_new_post_name( $post_ID, $post, $update ) {
if ( ! $update ) {
// do what you need
}
}