WP Manifestindependent plugin directory
manifest / integrations / wp-departs-train

Départs de Train (iRail)

WordPress plugin: real-time train departures via the iRail (SNCB) API. Cached, error-handled, 18 PHPUnit tests, CI.

by Yassine Boukamir · github.com/yboukamir/wp-departs-train · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/yboukamir/wp-departs-train/archive/refs/heads/main.zip

Readme

Départs de Train (iRail) — plugin WordPress

Plugin WordPress léger qui affiche, via un simple shortcode, les prochains départs de train en temps réel pour une gare belge — en s'appuyant sur l'API publique iRail (données SNCB).

Aperçu du widget de départs

C'est la version WordPress du même principe que mon outil Départs de train (JavaScript pur, 27 tests) : même API, même philosophie de gestion d'erreurs — mais packagé comme un vrai plugin WordPress, avec cache et tests PHPUnit.

Pourquoi ce projet

La plupart de mes projets clients sont sous WordPress, mais mes dépôts publics ne montraient jusqu'ici que du JavaScript. Ce plugin comble ce manque : il montre comment j'intègre une API externe dans WordPress, avec les mêmes exigences que sur mes autres outils — un test par cas d'erreur, pas seulement pour le chemin nominal.

Fonctionnalités

  • Shortcode [departs_train] : tableau des prochains départs (heure, destination, voie, statut).
  • Mise en cache (60 secondes, via les transients WordPress) pour éviter de solliciter l'API à chaque chargement de page.
  • Gestion explicite de chaque cas d'échec : gare introuvable, API injoignable (timeout, réseau coupé), réponse malformée — chacun a son propre code d'erreur et son message, et chacun est couvert par un test.
  • Zéro dépendance JavaScript : rendu entièrement côté serveur.

Installation

  1. Copier le dossier du plugin dans wp-content/plugins/wp-departs-train.
  2. Activer « Départs de Train (iRail) » depuis l'administration WordPress.
  3. Ajouter le shortcode dans une page ou un article :
[departs_train station="Charleroi-Sud"]
[departs_train station="Bruxelles-Central" limit="5"]
Attribut Défaut Description
station (vide) Nom de la gare (voir la liste des gares iRail).
limit 8 Nombre maximum de départs affichés.

Aperçu sans installer WordPress

php -S localhost:8080 -t demo demo/preview.php

Ouvre http://localhost:8080 : le rendu utilise le vrai code du plugin (Departs_Train_Shortcode::render_result()) avec des données d'exemple (demo/fixtures.php), sans aucun appel réseau. C'est ce script qui a servi à générer la capture d'écran ci-dessus.

Tests

composer install
composer test

18 tests couvrent : le cache (écriture, lecture, expiration), le client iRail (gare introuvable, panne réseau, réponse malformée, JSON invalide, troncature par limit, mise en cache effective — vérifiée en comptant les appels HTTP réels), et le rendu HTML (échappement des caractères, y compris un test de non-régression XSS explicite).

La logique métier (includes/) est volontairement découplée de WordPress : le client HTTP et le cache sont injectables, ce qui permet de tester chaque cas d'erreur sans dépendre d'une installation WordPress complète ni du réseau.

Architecture

departs-train.php              Fichier principal du plugin (hooks WordPress)
includes/
  class-cache.php               Couche de cache (transients WP, fallback mémoire pour les tests)
  class-irail-client.php        Appel API iRail + parsing + gestion d'erreurs
  class-shortcode.php            Rendu HTML du shortcode
assets/css/style.css            Styles du widget
demo/
  preview.php                    Aperçu local sans WordPress (voir ci-dessus)
  fixtures.php                   Données d'exemple utilisées par preview.php
tests/                          Suite PHPUnit (18 tests)
.github/workflows/tests.yml     CI : tests sur PHP 7.4, 8.1 et 8.3

Licence

MIT — voir LICENSE.


Par Yassine Boukamir, développeur web.

Read the full README on GitHub →