webentwicklung-frage-antwort-db.com.de

WordPress Gutenberg erhalten Seitenvorlagenwert, wenn Beitrag aktualisiert?

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

2
David Labbe

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_postmetaupdated_postmetaadd_post_metaadded_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
2
David Labbe