Le champ « titre » et l’éditeur de contenu ne suffisent pas toujours : un article de recette a besoin d’un temps de préparation, une fiche produit d’une référence interne. Ces informations additionnelles trouvent naturellement leur place dans un encart séparé, ancré dans la colonne latérale ou sous le contenu.
Déclarer une boîte méta
On utilise add_meta_box(), appelée sur le hook add_meta_boxes, en précisant l’écran concerné et la fonction qui affichera le formulaire :
add_action( 'add_meta_boxes', function () {
add_meta_box(
'temps_preparation',
'Temps de préparation',
'afficher_champ_temps',
'post'
);
} );
L’enregistrement de la valeur saisie se fait à part, sur le hook save_post, où il faut impérativement vérifier le nonce et les droits de l’utilisateur avant d’appeler update_post_meta().
Depuis l’éditeur de blocs
Les boîtes méta classiques restent affichées sous l’éditeur de blocs par défaut, mais l’équivalent moderne pour un champ simple passe souvent par un panneau latéral construit avec l’API JavaScript des blocs, ou par les champs personnalisés déclarés dans register_post_meta() avec show_in_rest activé.
Pièges fréquents
- Oublier de vérifier
current_user_can()dans la fonction de sauvegarde expose la donnée à une modification par un rôle qui ne le devrait pas. - Le hook
save_postse déclenche aussi lors des sauvegardes automatiques (autosave) : il faut le détecter avecwp_is_post_autosave()pour éviter d’écrire des données erronées. - L’argument
contextdeadd_meta_box()(« normal », « side » ou « advanced ») influence l’emplacement suggéré de l’encart, même si l’utilisateur peut ensuite le déplacer librement par glisser-déposer.