Ich muss den Namen der Seitenvorlage erhalten, wenn der Beitrag gespeichert wird. Der save_post-Hook schlägt fehl, da $_POST('page_template')
nicht verfügbar ist. Gutenberg speichert Beiträge über die API REST und verwendet WP_REST_Post_Controller->handle_template
zum Speichern von Seitenvorlagendaten. Und wie gesagt, es macht $_POST('page_template')
in save_post nicht verfügbar. Es sieht auch so aus, als würde WP_REST_Post_Controller->handle_template
nach save_post
ausgelöst. Ich muss nach einer Möglichkeit suchen, die gespeicherte Seitenvorlage zu überprüfen, damit ich den gespeicherten Wert bei Bedarf ändern kann. Vielen Dank
Also habe ich eine Lösung gefunden. Es gibt 4 Haken, die verwendet werden können, um dies abhängig von den genauen Anforderungen zu erreichen. Die Hooks stammen aus wp-includes/meta.php
in den Funktionen update_metadata()
und add_metadata()
.
Haken: update_postmeta
updated_postmeta
add_post_meta
added_post_meta
Diese werden in verschiedenen Zuständen genannt und von den Namen ist es ziemlich selbsterklärend. add_post_meta
und update_postmeta
werden unmittelbar vor jeder Änderung der Datenbank aufgerufen, und updated_postmeta
und added_post_meta
werden unmittelbar nach jeder Änderung der Datenbank aufgerufen.
Beispiel:
//Example usage for updated and added.
function page_template_check( $meta_id, $post_id, $meta_key, $meta_value ) {
// Stop if not the correct meta key
if ( $meta_key != '_wp_page_template' ) {
return false;
}
//Do stuff here
};
add_action( 'added_post_meta', 'page_template_check', 10, 4 ); //after add
add_action( 'updated_postmeta', 'page_template_check', 10, 4 ); //after update