# Compteur de couverts restants affiché en façade du site d’un restaurant

> Sans système de réservation complet, un simple champ de réglage suffit pour afficher un compteur de couverts restants sur la page d'accueil d'un restaurant qui limite ses services.

- Auteur : WordPress Développement
- Publié le : 2023-08-26
- Mis à jour le : 2023-08-26
- Catégorie : Astuces
- URL : https://www.wpmoderne.fr/tips/compteur-couverts-restants-facade-site-restaurant/

## L’essentiel

- Le compteur repose sur un seul champ de réglage modifiable par la gérance
- Aucun système de réservation externe n'est nécessaire
- Le calcul se limite à une soustraction simple et lisible

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 :

> L'essentiel à retenir : Le compteur repose sur un seul champ de réglage modifiable par la gérance ; Aucun système de réservation externe n'est nécessaire ; Le calcul se limite à une soustraction simple et lisible

```
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_midi` et `wpm_couverts_pris_midi`
- `wpm_capacite_soir` et `wpm_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é.
