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
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_postmeta
updated_postmeta
add_post_meta
added_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