# Thème vitrine pour une compagnie de spectacle : billetterie sans iframe

> Pour une compagnie qui refuse de gérer les paiements, un thème vitrine peut renvoyer vers une billetterie tierce sans l'enfermer dans une iframe fragile.

- Auteur : WordPress Développement
- Publié le : 2020-04-22
- Mis à jour le : 2020-04-22
- Catégorie : Thèmes
- URL : https://www.wpmoderne.fr/themes/theme-vitrine-compagnie-spectacle-billetterie-sans-iframe/

## L’essentiel

- L'iframe casse souvent le responsive et l'accessibilité
- Un lien sortant clair reste plus fiable qu'un embed
- Un CPT « spectacle » centralise les métadonnées de représentation

Une compagnie de spectacle vivant contacte son développeur avec une demande précise : un site qui présente joliment les représentations à venir, mais qui ne gère surtout pas elle-même la vente de billets. La billetterie reste chez un prestataire spécialisé, choisi pour sa conformité aux obligations de paiement en ligne et pour son support client dédié au spectacle vivant.

La solution la plus rapide, intégrer la page de vente du prestataire dans une iframe directement sur le site, semble économiser du travail. Elle pose pourtant des problèmes récurrents : hauteur d'iframe qui ne s'adapte pas au contenu, défilement imbriqué peu naturel sur mobile, et une billetterie qui applique parfois ses propres règles de sécurité empêchant l'affichage en iframe. Un simple lien sortant, bien construit, évite tous ces écueils.

## Pourquoi éviter l'iframe dans ce contexte

Une iframe pointant vers un système de billetterie tiers hérite de toutes les contraintes de la page source : sa propre mise en page, ses propres polices, parfois son propre bandeau de consentement aux cookies qui se superpose maladroitement à celui du site principal. Sur mobile, la hauteur fixe de l'iframe oblige souvent l'utilisateur à faire défiler dans un cadre trop petit, une expérience nettement moins confortable qu'une navigation en pleine page.

Certains prestataires de billetterie appliquent en plus un en-tête `X-Frame-Options` ou une politique `Content-Security-Policy` qui bloque purement et simplement l'affichage dans une iframe, pour des raisons de sécurité liées au paiement en ligne. Miser sur l'iframe revient alors à dépendre d'une configuration que la compagnie ne maîtrise pas et qui peut changer sans préavis.

## Le custom post type « représentation »

Le thème s'organise autour d'un type de contenu personnalisé dédié aux représentations, distinct des articles de blog classiques utilisés pour les actualités de la compagnie. Chaque représentation porte ses propres métadonnées : lieu, date et heure, tarif indicatif, et surtout l'URL de la page de vente chez le prestataire de billetterie.

> L'essentiel à retenir : L'iframe casse souvent le responsive et l'accessibilité ; Un lien sortant clair reste plus fiable qu'un embed ; Un CPT « spectacle » centralise les métadonnées de représentation

```
function compagnie_cpt_representation() {
    register_post_type( 'representation', array(
        'labels' => array(
            'name'          => 'Représentations',
            'singular_name' => 'Représentation',
        ),
        'public'       => true,
        'has_archive'  => true,
        'menu_icon'    => 'dashicons-tickets-alt',
        'supports'     => array( 'title', 'editor', 'thumbnail' ),
        'rewrite'      => array( 'slug' => 'representations' ),
    ) );
}
add_action( 'init', 'compagnie_cpt_representation' );
```

Les champs additionnels (lieu, date, URL de billetterie) sont ajoutés via des champs personnalisés classiques ou un plugin de champs, selon les préférences de l'équipe. L'essentiel est que l'URL de billetterie reste un champ à part entière, jamais codé en dur dans le template.

## Construire le bouton d'appel à l'action

Le template de la représentation affiche un bouton clairement identifié, qui ouvre la billetterie dans un nouvel onglet plutôt que dans une iframe. Ce choix respecte l'attente implicite de l'utilisateur : il sait qu'il quitte le site de la compagnie pour un espace de paiement distinct, ce qui renforce la confiance plutôt que de la fragiliser.

- Le bouton porte un intitulé explicite, du type « Réserver mes places »
- Le lien s'ouvre dans un nouvel onglet avec `target="_blank"` et `rel="noopener"`
- Une mention discrète précise le nom du prestataire de billetterie utilisé
- Si le champ URL de billetterie est vide, le bouton est masqué plutôt que de pointer vers une page vide

## Gérer l'absence de billetterie en amont de la vente

Certaines représentations sont annoncées avant l'ouverture effective de la billetterie. Le template doit gérer ce cas sans afficher de lien cassé : tant que le champ URL n'est pas renseigné, un message du type « Billetterie ouverte prochainement » remplace le bouton d'action. Cette bascule évite à l'équipe de la compagnie de devoir publier la page en plusieurs temps ou de la garder en brouillon jusqu'au dernier moment.

## Le résultat pour la compagnie

Le site vitrine reste rapide à charger, puisqu'aucun script tiers de billetterie n'est chargé sur les pages de présentation des spectacles. La responsabilité du paiement, de la conformité et du support client reste entièrement du côté du prestataire spécialisé, ce qui correspond exactement à la demande initiale de la compagnie. Le développeur n'a par ailleurs aucune dépendance à maintenir vis-à-vis d'un widget d'iframe qui pourrait changer de comportement à tout moment.

> Sur ce genre de projet, le réflexe à éviter est de vouloir tout intégrer sur une seule page pour « faire propre ». Un lien sortant bien traité rend souvent un meilleur service que n'importe quelle intégration technique forcée.

## Notre verdict

Pour une structure qui ne souhaite pas endosser la responsabilité du paiement en ligne, un thème vitrine appuyé sur un custom post type dédié et un simple lien sortant constitue une solution robuste, légère et facile à maintenir. Elle évite les pièges classiques de l'iframe tout en laissant à la compagnie la liberté de changer de prestataire de billetterie sans toucher au thème : il suffit de mettre à jour le champ URL sur chaque représentation concernée.
