Un restaurant qui limite volontairement son nombre de couverts par service n’a pas toujours besoin d’un moteur de réservation complet avec créneaux horaires et gestion des annulations. Quand la gérance connaît sa capacité et souhaite simplement communiquer une disponibilité approximative, un compteur simple basé sur un réglage manuel répond déjà à l’essentiel du besoin, pour une fraction du coût de développement.
Le principe reste volontairement minimaliste : un champ de réglage stocke la capacité totale du service, un autre stocke le nombre de couverts déjà pris, et une simple soustraction affiche le nombre restant. La mise à jour du second champ peut se faire manuellement par la gérance en fin de matinée, ou automatiquement si les réservations transitent déjà par un formulaire WordPress.
Créer les réglages nécessaires
Deux options suffisent, enregistrées via l’API des réglages native de WordPress, par exemple dans une page d’options dédiée au restaurant :
register_setting( 'wpm_restaurant', 'wpm_capacite_service' );
register_setting( 'wpm_restaurant', 'wpm_couverts_pris' );
La gérance renseigne la capacité totale une fois pour toutes (par exemple 40 couverts pour le service du soir) et met à jour le nombre de couverts déjà réservés au fil de la journée, directement depuis l’écran de réglages du site.
Calculer et afficher le compteur
Le calcul lui-même tient en quelques lignes, sans dépendance externe :

function wpm_couverts_restants() {
$capacite = (int) get_option( 'wpm_capacite_service', 0 );
$pris = (int) get_option( 'wpm_couverts_pris', 0 );
$restants = max( 0, $capacite - $pris );
return $restants;
}
La fonction max( 0, ... ) évite d’afficher un nombre négatif si la gérance a saisi par erreur un nombre de couverts pris supérieur à la capacité totale, une erreur de saisie plus fréquente qu’on ne l’imagine en période de rush.
Affichage sur la page d’accueil
$restants = wpm_couverts_restants();
if ( $restants > 0 ) {
echo '<p>Encore ' . esc_html( $restants ) . ' couverts disponibles ce soir</p>';
} else {
echo '<p>Service complet pour ce soir</p>';
}
Réinitialiser le compteur chaque jour
Sans réinitialisation automatique, le champ wpm_couverts_pris resterait figé au nombre du dernier service, ce qui afficherait un service complet dès l’ouverture du lendemain. Une tâche planifiée via wp_schedule_event() permet de remettre ce compteur à zéro chaque jour à heure fixe :
if ( ! wp_next_scheduled( 'wpm_reinitialiser_couverts' ) ) {
wp_schedule_event( strtotime( 'today 06:00' ), 'daily', 'wpm_reinitialiser_couverts' );
}
add_action( 'wpm_reinitialiser_couverts', function () {
update_option( 'wpm_couverts_pris', 0 );
} );
Variante : deux compteurs pour midi et soir
Un restaurant qui distingue son service du midi de celui du soir peut simplement dupliquer les deux champs avec un suffixe :
wpm_capacite_midietwpm_couverts_pris_midiwpm_capacite_soiretwpm_couverts_pris_soir- Une fonction générique acceptant le service en paramètre plutôt que deux fonctions dupliquées
function wpm_couverts_restants_service( $service ) {
$capacite = (int) get_option( "wpm_capacite_{$service}", 0 );
$pris = (int) get_option( "wpm_couverts_pris_{$service}", 0 );
return max( 0, $capacite - $pris );
}
Conseil maison : ne cherchez pas à automatiser la mise à jour du compteur avant que la gérance n’ait testé la version manuelle pendant quelques semaines. Beaucoup découvrent que la saisie manuelle suffit largement à leur rythme de travail.
Ce que cette solution ne couvre pas
Elle ne gère pas les annulations de dernière minute qui devraient logiquement libérer des couverts, ni la distinction entre plusieurs zones de la salle. Pour ces besoins, un système de réservation avec créneaux et gestion fine des annulations reste nécessaire, mais il s’agit alors d’un développement bien plus conséquent que ce simple affichage de disponibilité.
Notre verdict
Pour un restaurant qui souhaite simplement donner une indication de disponibilité sans investir dans un système de réservation complet, ce compteur basé sur deux réglages et une soustraction fait le travail avec un minimum de code à maintenir. Il constitue aussi une bonne première étape avant d’envisager, si le besoin se confirme, un système plus élaboré.