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

Elementor

Un indicateur de disponibilité qui se rafraîchit seul sur une page Elementor

Un badge relié à une route REST maison actualise le stock restant d'une série limitée sans jamais recharger la page, sans dépendre d'un gestionnaire de stock lourd.

Par Clément Hadrot • 28 novembre 2025 • 4 min de lecture • Aucun commentaire
Un indicateur de disponibilité qui se rafraîchit seul sur une page Elementor

30 secondes : c’est l’intervalle retenu pour ce badge de disponibilité, un compromis entre la fraîcheur de l’information affichée et le nombre de requêtes envoyées au serveur. Trop court, l’intervalle multiplie les appels pour un gain de précision négligeable ; trop long, le badge affiche une valeur périmée au moment critique où les dernières places d’une série limitée partent vite.

Le besoin, ici, ne justifie pas l’installation d’un plugin de gestion de stock complet : un compteur de disponibilité pour une série limitée, affiché sur une page Elementor, se contente d’une route REST maison et d’un petit script de rafraîchissement, sans dépendance supplémentaire.

Le problème posé

La page présente un nombre d’exemplaires restants pour une série limitée. Ce nombre doit se rafraîchir régulièrement sans recharger la page entière, pour donner un sentiment de disponibilité réelle sans pour autant demander au visiteur d’actualiser manuellement. La contrainte : rester simple, sans dépendre d’un système de gestion de stock plus large que le besoin réel.

Le snippet côté serveur, commenté

La première brique consiste à exposer une route REST personnalisée, qui renvoie uniquement le nombre restant, stocké par exemple dans une option ou une métadonnée de l’article concerné :

add_action( 'rest_api_init', function () {
    register_rest_route( 'maison/v1', '/disponibilite/(?P<id>\d+)', array(
        'methods'             => 'GET',
        'callback'            => 'maison_get_disponibilite',
        'permission_callback' => '__return_true',
        'args'                => array(
            'id' => array(
                'validate_callback' => function( $param ) {
                    return is_numeric( $param );
                },
            ),
        ),
    ) );
} );

function maison_get_disponibilite( $request ) {
    $post_id = (int) $request['id'];
    $restant = get_post_meta( $post_id, 'stock_restant', true );

    return array(
        'restant' => (int) $restant,
    );
}

Cette route reste volontairement minimale : elle ne renvoie qu’un entier, sans exposer d’autres métadonnées de l’article, ce qui limite la surface d’information accessible publiquement.

Le snippet côté navigateur, commenté

Côté page, un widget HTML personnalisé d’Elementor accueille un badge et un petit script qui interroge la route à intervalle régulier :

L'essentiel à retenir : Une route REST publique renvoie une simple valeur numérique ; Un script d'une vingtaine de lignes suffit à interroger cette route ; Prévoir un état de repli si la requête échoue
<span id="badge-disponibilite">chargement…</span>
<script>
(function () {
  const postId = 128;
  const badge = document.getElementById( 'badge-disponibilite' );

  async function rafraichir() {
    try {
      const reponse = await fetch( '/wp-json/maison/v1/disponibilite/' + postId );
      if ( ! reponse.ok ) {
        throw new Error( 'reponse invalide' );
      }
      const donnees = await reponse.json();
      badge.textContent = donnees.restant + ' exemplaires restants';
    } catch ( erreur ) {
      badge.textContent = 'disponibilité en cours de mise à jour';
    }
  }

  rafraichir();
  setInterval( rafraichir, 30000 );
})();
</script>

Le bloc try/catch n’est pas décoratif : sans lui, une simple coupure réseau ou une erreur serveur temporaire laisserait le badge planté sur son dernier message d’erreur JavaScript brut, visible de tous les visiteurs.

Variante : afficher un état d’épuisement clair

Une variante utile consiste à adapter le message affiché lorsque le stock atteint zéro, plutôt que d’afficher simplement « 0 exemplaire restant », formulation qui laisse penser à une erreur plutôt qu’à un épuisement réel :

  • Au-dessus de cinq exemplaires : affichage neutre du nombre restant.
  • Entre un et cinq exemplaires : message renforcé, du type « Il n’en reste que X ».
  • À zéro : remplacement du badge par un message d’épuisement explicite, sans chiffre.

Variante : réduire la fréquence après épuisement

Une fois le stock à zéro, interroger la route toutes les 30 secondes ne présente plus grand intérêt. Un ajustement simple consiste à espacer les requêtes une fois ce seuil atteint, par exemple toutes les cinq minutes, pour réduire la charge inutile sur le serveur sans dégrader l’expérience du visiteur.

Un badge qui se rafraîchit sans jamais gérer l’échec réseau finit toujours, un jour, par afficher une erreur brute à un visiteur au pire moment.

En résumé

Un indicateur de disponibilité qui se met à jour seul ne demande ni gestionnaire de stock complet ni dépendance lourde : une route REST minimale, un script de rafraîchissement avec gestion d’échec, et un intervalle raisonnable suffisent largement pour une série limitée affichée sur une page Elementor.

Partager :

À propos de l'auteur

Clément Hadrot

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

Voir tous ses articles

Dans la même veine

À lire aussi