Combien de places reste-t-il pour le cours de 18 heures ? C’est la question que se posent chaque jour les visiteurs du site d’une salle de sport de quartier, avant même de se déplacer. Installer un système de réservation en ligne complet aurait résolu le problème, mais représentait un investissement disproportionné pour une structure qui gère ses inscriptions au comptoir, sur un simple cahier.
La solution retenue tient en un widget Elementor personnalisé, très simple, qui affiche un nombre de places restantes à partir d’une métadonnée mise à jour manuellement par l’accueil. Pas de paiement en ligne, pas de compte utilisateur, juste un chiffre visible et fiable.
Le post type « cours » et ses deux champs
Chaque cours collectif — yoga, cross-training, boxe éducative — est un contenu du post type cours, avec un titre, un horaire en texte libre, et deux champs personnalisés : places_totales et places_prises. Ces deux valeurs suffisent à calculer le nombre de places restantes à l’affichage, sans stocker de troisième champ redondant.
function wpm_places_restantes( $post_id ) {
$total = (int) get_post_meta( $post_id, 'places_totales', true );
$prises = (int) get_post_meta( $post_id, 'places_prises', true );
return max( 0, $total - $prises );
}
Le widget personnalisé qui affiche le compteur

Le widget étend la classe \Elementor\Widget_Base et propose un seul réglage dans son panneau : le choix du cours à afficher, via un contrôle de type select2 alimenté par une requête sur le post type. La méthode render() reste volontairement courte.
protected function render() {
$settings = $this->get_settings_for_display();
$post_id = (int) $settings['cours_id'];
$restant = wpm_places_restantes( $post_id );
if ( $restant <= 0 ) {
echo '<p class="wpm-complet">Cours complet</p>';
return;
}
printf(
'<p class="wpm-compteur">%d place%s restante%s</p>',
$restant,
$restant > 1 ? 's' : '',
$restant > 1 ? 's' : ''
);
}
Cette approche minimaliste évite d’installer un plugin de réservation complet pour un besoin d’affichage simple, et laisse la porte ouverte à une évolution ultérieure si la salle décide un jour d’automatiser ses inscriptions.
Comment l’accueil met à jour les chiffres
La modification des places prises se fait directement depuis la page d’édition du cours, dans l’éditeur classique de WordPress, sans passer par l’interface Elementor. Un champ numérique simple, ajouté via add_meta_box(), permet à l’accueil d’incrémenter la valeur après chaque inscription au comptoir.
- Un cours plein affiche « Cours complet » sans possibilité de réservation.
- Un compteur à zéro déclenche l’affichage automatique de ce message, sans intervention supplémentaire.
- La mise à jour prend moins de dix secondes, directement depuis un smartphone si besoin.
Pourquoi ne pas automatiser davantage
La salle a explicitement refusé un système de réservation en ligne, pour des raisons pratiques : les inscriptions se font en personne, souvent après une discussion avec le coach, et un système automatisé aurait complexifié une routine qui fonctionne bien humainement. Le rôle du widget se limite donc à informer, pas à réserver, ce qui correspond exactement au besoin exprimé.
Un widget qui se contente d’afficher une information utile vaut souvent mieux qu’un système complet mal adapté aux habitudes réelles d’une équipe.
En résumé
Deux champs personnalisés et un widget d’une vingtaine de lignes ont suffi à répondre à un besoin exprimé simplement : savoir avant de se déplacer si un cours affiche encore des places. Cette solution reste volontairement modeste, mais elle correspond précisément à l’usage réel de la structure, ce qui compte davantage qu’une fonctionnalité impressionnante mais mal alignée avec le quotidien de l’équipe.