web-dev-qa-db-fra.com

WordPress Gutenberg obtenir la valeur de modèle de page lors de la publication post?

Je dois obtenir le nom du modèle de page lorsque le message est enregistré. Il échoue dans le hook save_post car $_POST('page_template') n'est pas disponible. Gutenberg enregistre les messages via l'API REST et utilise WP_REST_Post_Controller->handle_template pour enregistrer les données du modèle de page. Et comme je l'ai dit, $_POST('page_template') n'est pas disponible dans save_post. Il semble également que WP_REST_Post_Controller->handle_template se déclenche après le save_post hook. Je dois trouver un moyen de vérifier le modèle de page en cours d'enregistrement afin de pouvoir modifier la valeur en cours d'enregistrement si nécessaire. Merci

2
David Labbe

J'ai donc trouvé une solution. Il y a 4 crochets qui peuvent être utilisés pour accomplir ceci en fonction des besoins exacts. Les crochets proviennent de wp-includes/meta.php dans les fonctions update_metadata() et add_metadata().

Crochets: update_postmetaupdated_postmetaadd_post_metaadded_post_meta

Ceux-ci sont appelés à différents états et d'après les noms, c'est assez explicite. add_post_meta et update_postmeta sont appelés juste avant toute modification de base de données et updated_postmeta et added_post_meta sont appelés juste après toute modification apportée à la base de données.

Exemple:

//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