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

Extensions

Une agence de voyage : disponibilités de circuits sans moteur de réservation

Un calendrier simplifié affiche des créneaux ouverts ou complets, sans les mécanismes de tarification dynamique d'un vrai moteur de réservation.

Par WordPress Développement • 1 octobre 2022 • 4 min de lecture • Aucun commentaire
Une agence de voyage : disponibilités de circuits sans moteur de réservation

Combien de départs un circuit accompagné programme-t-il réellement par saison ? Pour une petite agence de voyage spécialisée, la réponse tourne souvent autour d’une poignée de dates par circuit et par an — un volume qui ne justifie en rien l’installation d’un moteur de réservation complet avec gestion de tarification dynamique, de disponibilité en temps réel multi-canal et de paiement en ligne intégré.

Ce cas d’usage construit une solution volontairement limitée : chaque circuit est un type de contenu personnalisé, chaque départ programmé une entrée répétable avec un statut simple. L’objectif reste précis : informer un visiteur du site sur la disponibilité réelle d’un départ, sans jamais prétendre gérer la réservation elle-même, qui continue de se faire par téléphone ou en agence physique.

La structure retenue

Le circuit lui-même reste un article classique, enrichi d’une description et d’une image. Les départs programmés sont stockés sous forme de tableau sérialisé dans une métadonnée unique, plutôt que dans une table personnalisée — un choix justifié par le faible volume de données concerné, qui ne demande pas la complexité d’une structure relationnelle dédiée :

[
    { "date": "2023-04-14", "statut": "ouvert", "places_restantes": 6 },
    { "date": "2023-05-02", "statut": "complet", "places_restantes": 0 },
    { "date": "2023-06-18", "statut": "annule", "places_restantes": 0 }
]
L'essentiel à retenir : Un statut par départ suffit à afficher une disponibilité fiable ; Aucune tarification dynamique n'est nécessaire pour ce périmètre restreint ; Le paiement reste géré hors du site, par téléphone ou en agence

Saisir les départs depuis l’administration

function agence_metabox_departs() {
    add_meta_box(
        'agence_departs',
        'Départs programmés',
        'agence_afficher_metabox_departs',
        'circuit'
    );
}
add_action( 'add_meta_boxes', 'agence_metabox_departs' );

function agence_afficher_metabox_departs( $post ) {
    $departs = get_post_meta( $post->ID, '_departs_programmes', true );
    $departs = $departs ? json_decode( $departs, true ) : array();
    wp_nonce_field( 'agence_departs_nonce', 'agence_nonce' );
    ?>
    <textarea name="departs_json" rows="6" cols="60"><?php
        echo esc_textarea( wp_json_encode( $departs, JSON_PRETTY_PRINT ) );
    ?></textarea>
    <p>Format JSON : date, statut (ouvert, complet, annule), places_restantes.</p>
    <?php
}

Une saisie via un champ JSON reste volontairement rudimentaire pour ce volume limité de départs par circuit ; une interface plus élaborée, avec des champs répétables individuels, deviendrait pertinente si le nombre de départs annuels augmentait significativement.

Afficher la disponibilité côté public

function agence_afficher_departs( $circuit_id ) {
    $departs_json = get_post_meta( $circuit_id, '_departs_programmes', true );
    $departs = $departs_json ? json_decode( $departs_json, true ) : array();

    echo '<table><thead><tr><th>Date de départ</th><th>Disponibilité</th></tr></thead><tbody>';
    foreach ( $departs as $depart ) {
        $libelle = match ( $depart['statut'] ) {
            'ouvert' => $depart['places_restantes'] . ' places restantes',
            'complet' => 'Complet',
            'annule' => 'Départ annulé',
            default => 'Non communiqué',
        };
        printf(
            '<tr><td>%s</td><td>%s</td></tr>',
            esc_html( $depart['date'] ),
            esc_html( $libelle )
        );
    }
    echo '</tbody></table>';
}

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

  • Aucune tarification dynamique selon le remplissage ou la période de réservation.
  • Aucun paiement en ligne : la réservation reste confirmée par contact direct avec l’agence.
  • Aucune gestion automatique de liste d’attente en cas de départ complet.
  • Aucune synchronisation avec un système de réservation de transport tiers.

Pourquoi cette limitation reste un choix assumé

Un moteur de réservation complet impose une charge de maintenance et un coût de licence rarement justifiés pour un volume de quelques dizaines de départs annuels répartis sur un petit nombre de circuits. Cette solution simplifiée couvre le besoin réel — informer avant de contacter l’agence — sans complexité superflue à faire évoluer chaque saison.

Le bon outil n’est pas toujours le plus complet : c’est celui qui correspond exactement au volume et au processus de vente réels de l’activité concernée.

En résumé

Pour une agence de voyage au volume de départs limité, un type de contenu personnalisé associé à une métadonnée structurée en JSON suffit à afficher une disponibilité fiable, sans les mécanismes complexes d’un moteur de réservation. Cette approche reste évolutive : elle peut migrer vers une structure plus élaborée le jour où le volume de circuits et de départs le justifiera réellement.

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