Le lundi 18 heures, sur un cabinet de groupe utilisant un agenda de prise de rendez-vous en ligne, restait le moment critique de la semaine : c’est l’heure à laquelle un planning resté vide pour le mardi devenait officiellement un problème, souvent découvert trop tard, quand un patient tentait de prendre rendez-vous sur un créneau qui n’avait simplement jamais été ouvert. Le praticien concerné, en congé la semaine précédente, avait tout simplement oublié de reconfigurer ses disponibilités à son retour.
La correction retenue ne cherche pas à empêcher l’oubli en amont — impossible à garantir totalement — mais à le détecter automatiquement et à le signaler avant qu’il ne devienne visible côté patient. Une tâche planifiée vérifie chaque jour, pour le lendemain, quels praticiens n’ont aucun créneau confirmé, et déclenche une notification interne ciblée.
Modéliser la notion de « planning confirmé »
Sur ce système, chaque praticien dispose d’un type de contenu personnalisé planning_praticien, avec une meta _creneaux_jour stockant un tableau sérialisé de créneaux par date, et une meta _planning_confirme passant à 1 une fois le praticien satisfait de sa semaine.
$creneaux = get_post_meta( $planning_id, '_creneaux_jour', true );
$confirme = get_post_meta( $planning_id, '_planning_confirme', true );
// Un planning est considéré « non confirmé » si aucun créneau n'existe
// pour le jour cible, ou si la case de confirmation n'a jamais été cochée.
Planifier la vérification quotidienne
Une tâche WP-Cron personnalisée s’exécute chaque jour à 18 heures, heure choisie pour laisser encore le temps à un praticien de corriger son planning avant la fin de journée de travail du secrétariat.

if ( ! wp_next_scheduled( 'wpmoderne_verifier_plannings_j1' ) ) {
wp_schedule_event( strtotime( 'today 18:00' ), 'daily', 'wpmoderne_verifier_plannings_j1' );
}
add_action( 'wpmoderne_verifier_plannings_j1', function () {
$demain = wp_date( 'Y-m-d', strtotime( '+1 day' ) );
$plannings = get_posts( array(
'post_type' => 'planning_praticien',
'posts_per_page' => -1,
'post_status' => 'publish',
) );
foreach ( $plannings as $planning ) {
$creneaux = get_post_meta( $planning->ID, '_creneaux_jour', true ) ?: array();
$confirme = get_post_meta( $planning->ID, '_planning_confirme_' . $demain, true );
if ( empty( $creneaux[ $demain ] ) || ! $confirme ) {
wpmoderne_notifier_praticien_non_confirme( $planning->ID, $demain );
}
}
} );
Notifier le praticien concerné
La notification passe par un e-mail direct au praticien, mais aussi par une notice d’administration visible dès sa prochaine connexion, via admin_notices filtré sur son identifiant utilisateur, pour couvrir le cas où l’e-mail n’est pas lu à temps.
function wpmoderne_notifier_praticien_non_confirme( $planning_id, $date ) {
$auteur = get_post_field( 'post_author', $planning_id );
$user = get_user_by( 'id', $auteur );
if ( ! $user ) {
return;
}
wp_mail(
$user->user_email,
'Planning non confirmé pour le ' . wp_date( 'd/m/Y', strtotime( $date ) ),
"Bonjour,\n\nVotre planning n'est pas encore confirmé pour demain. Merci de le mettre à jour avant 20h pour éviter tout créneau indisponible côté patients.\n\nL'équipe technique."
);
update_post_meta( $planning_id, '_notification_envoyee_' . $date, current_time( 'mysql' ) );
}
Escalader vers le secrétariat en cas d’absence de correction
Une seconde vérification, deux heures après la première, contrôle si le planning a bien été corrigé entretemps. Si ce n’est pas le cas, le secrétariat reçoit une alerte pour agir manuellement : contacter le praticien par téléphone, ou fermer temporairement la prise de rendez-vous en ligne pour ce créneau plutôt que de laisser un vide invisible aux patients.
- Vérifier à 20 heures si
_planning_confirmeest passé à1depuis la première alerte. - Si non, envoyer un e-mail récapitulatif au secrétariat avec la liste des praticiens concernés pour le lendemain.
- Consigner chaque escalade dans un journal simple, pour repérer les praticiens qui oublient régulièrement plutôt que ponctuellement.
Éviter la notification qui devient du bruit
Un praticien systématiquement en retard sur ses confirmations finit par ignorer une alerte devenue routinière. Espacer les rappels avec une escalade progressive — d’abord discrète, puis plus visible — garde son efficacité d’alerte plutôt que de la transformer en simple notification ignorée par habitude.
Une alerte qui arrive tous les jours, y compris quand tout va bien, cesse d’être une alerte : elle doit rester rare pour rester utile.
En résumé
Le vide dans un planning médical ne se voit qu’au moment où un patient tente de prendre rendez-vous, souvent trop tard pour corriger sans dommage sur l’image du cabinet. Une vérification quotidienne automatisée, combinée à une escalade progressive vers le secrétariat, transforme un oubli individuel en incident détecté et traité avant qu’il ne devienne visible côté patient.