Le WordPress d'aujourd'hui, décodé pour les développeurs

Extensions

Un food truck : les ruptures de stock affichées en direct, sans caisse

Un compteur décrémenté à chaque commande évite de vendre un plat épuisé, sans les fonctionnalités complètes d'un point de vente.

Par WordPress Développement • 25 juillet 2021 • 4 min de lecture • Aucun commentaire
Un food truck : les ruptures de stock affichées en direct, sans caisse

Un menu affiché sur un site web qui propose encore un plat épuisé depuis midi frustre plus un client qu’il ne l’informe. Pour un food truck qui prépare un nombre limité de portions par service, ce cas d’usage précis n’a besoin ni d’un module de caisse, ni d’un système de commande complet : un simple compteur par plat, décrémenté à chaque clic de commande annoncée, suffit à refléter la disponibilité réelle du jour.

Ce cas s’appuie sur un menu géré via des articles classiques, avec une métadonnée numérique représentant les portions restantes. Le principe reste volontairement minimal : il ne remplace pas la caisse du camion, il informe seulement le visiteur du site avant qu’il ne se déplace pour rien.

La structure de données retenue

Chaque plat du jour est un article standard, avec deux métadonnées : _stock_du_jour, un entier remis à zéro chaque matin par le gérant, et _stock_restant, décrémenté à chaque clic sur un bouton « Je le veux ». Aucune table personnalisée n’est nécessaire pour ce volume : quelques plats par jour, remis à zéro quotidiennement.

L'essentiel à retenir : Un compteur par plat suffit à afficher une rupture en temps réel ; La décrémentation se fait au clic, sans validation de paiement ; Le site reste indépendant de la caisse physique du camion

Réinitialiser le stock chaque matin

function foodtruck_reinitialiser_stock() {
    $plats = get_posts( array(
        'post_type'      => 'plat_jour',
        'posts_per_page' => -1,
    ) );
    foreach ( $plats as $plat ) {
        $stock_initial = get_post_meta( $plat->ID, '_stock_du_jour', true );
        update_post_meta( $plat->ID, '_stock_restant', (int) $stock_initial );
    }
}
add_action( 'foodtruck_reset_quotidien', 'foodtruck_reinitialiser_stock' );

Cette fonction est déclenchée par une tâche planifiée quotidienne, enregistrée à l’activation de l’extension avec wp_schedule_event(). Le gérant modifie _stock_du_jour depuis l’écran d’édition de chaque plat la veille au soir, et la réinitialisation matinale s’occupe du reste sans intervention manuelle.

Décrémenter le stock sans passer par une caisse

Le clic sur « Je le veux » déclenche un appel AJAX qui décrémente le compteur, sans jamais impliquer de transaction financière — l’achat se fait physiquement au camion, le site sert uniquement à réserver visuellement une portion et à décourager un affichage trompeur :

function foodtruck_ajax_reserver_portion() {
    check_ajax_referer( 'foodtruck_reservation', 'nonce' );
    $plat_id = isset( $_POST['plat_id'] ) ? (int) $_POST['plat_id'] : 0;
    $stock_restant = (int) get_post_meta( $plat_id, '_stock_restant', true );

    if ( $stock_restant <= 0 ) {
        wp_send_json_error( array( 'message' => 'Ce plat est épuisé pour aujourd\'hui.' ) );
    }

    update_post_meta( $plat_id, '_stock_restant', $stock_restant - 1 );
    wp_send_json_success( array( 'stock_restant' => $stock_restant - 1 ) );
}
add_action( 'wp_ajax_foodtruck_reserver', 'foodtruck_ajax_reserver_portion' );
add_action( 'wp_ajax_nopriv_foodtruck_reserver', 'foodtruck_ajax_reserver_portion' );

La vérification $stock_restant <= 0 empêche le compteur de devenir négatif, y compris en cas de double clic rapide, même si une vérification purement côté serveur ne protège pas parfaitement contre deux requêtes strictement simultanées — un détail acceptable ici, vu le faible volume de commandes concurrentes sur un service de food truck.

Ce que cette approche ne prétend pas résoudre

  • Aucune synchronisation avec un terminal de paiement physique : la décrémentation reste déclarative, pas transactionnelle.
  • Aucune gestion de file d’attente ou de créneau horaire : le compteur reflète une disponibilité globale du jour, pas un ordre de passage.
  • Aucune notification automatique au gérant lorsque le stock atteint zéro : un simple coup d’œil au tableau de bord suffit à ce volume.

Un outil pensé pour informer plutôt que pour vendre évite bien des complications inutiles, tant que le volume reste à l’échelle d’un service quotidien.

En résumé

Pour un food truck, deux métadonnées numériques et un appel AJAX suffisent à afficher fidèlement les ruptures de stock du jour, sans les fonctionnalités complètes d’un point de vente. La simplicité de cette solution est justement sa force : elle correspond exactement au volume et au rythme réel de l’activité, sans complexité superflue à maintenir.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi