if ( current_time( 'timestamp' ) < strtotime( $date_ouverture_ventes ) ) {
// le tarif reste masqué
}
Cette simple comparaison de dates résume l’essentiel d’un besoin fréquent en salle de spectacle vivant : communiquer sur un événement — affiche, distribution, date — plusieurs semaines avant que les prix ne soient officiellement dévoilés et que la billetterie n’ouvre. L’annonce anticipée fait partie de la stratégie de communication, mais le tarif doit rester confidentiel jusqu’au jour J.
Le piège habituel consiste à publier la fiche du spectacle complète, tarif inclus, en attendant simplement d’ouvrir la billetterie plus tard. Résultat : le tarif apparaît dans le code source de la page dès la publication, consultable par n’importe quel visiteur curieux, bien avant la date de communication officielle.
Structurer la fiche du spectacle
Sur un type de contenu spectacle, deux champs suffisent : tarif_plein, qui contient le prix du billet, et date_ouverture_billetterie, une date et heure précise à partir de laquelle le tarif devient consultable. Tant que cette date n’est pas atteinte, le tarif ne doit jamais transiter jusqu’au HTML rendu.
La fonction de vérification
Comme pour toute condition d’affichage sensible au temps, une seule fonction centralise la logique :

function wpm_billetterie_ouverte( $post_id ) {
$date_ouverture = get_post_meta( $post_id, 'date_ouverture_billetterie', true );
if ( ! $date_ouverture ) {
return false;
}
return current_time( 'timestamp' ) >= strtotime( $date_ouverture );
}
L’utilisation de current_time( 'timestamp' ) plutôt que la fonction native time() garantit que la comparaison respecte le fuseau horaire configuré dans les réglages du site, un détail qui évite un décalage d’une heure en cas de changement d’heure d’été ou d’hiver mal anticipé.
Afficher le tarif ou un message d’attente
if ( wpm_billetterie_ouverte( get_the_ID() ) ) {
$tarif = get_post_meta( get_the_ID(), 'tarif_plein', true );
echo '<p>Tarif plein : ' . esc_html( $tarif ) . ' €</p>';
} else {
echo '<p>Tarifs communiqués à l\'ouverture de la billetterie</p>';
}
Un compte à rebours pour maintenir l’intérêt
En complément du message d’attente, un compte à rebours simple jusqu’à la date d’ouverture entretient l’intérêt du visiteur sans dévoiler le tarif :
$date_ouverture = get_post_meta( get_the_ID(), 'date_ouverture_billetterie', true );
$jours_restants = ceil( ( strtotime( $date_ouverture ) - current_time( 'timestamp' ) ) / DAY_IN_SECONDS );
echo '<p>Ouverture de la billetterie dans ' . esc_html( $jours_restants ) . ' jours</p>';
Protéger aussi l’API REST
Si le site expose ses spectacles via l’API REST, par exemple pour une application mobile partenaire, il ne suffit pas de masquer le tarif dans le template : le champ reste sinon consultable directement via une requête à l’endpoint REST. Un filtre sur la réponse retire le champ tant que la billetterie n’est pas ouverte :
add_filter( 'rest_prepare_spectacle', 'wpm_masquer_tarif_api_rest', 10, 2 );
function wpm_masquer_tarif_api_rest( $response, $post ) {
if ( ! wpm_billetterie_ouverte( $post->ID ) ) {
unset( $response->data['meta']['tarif_plein'] );
}
return $response;
}
Cas particulier : ouverture anticipée pour un public privilégié
- Certaines salles proposent une prévente réservée aux abonnés avant l’ouverture publique.
- Un second champ
date_ouverture_abonnes, antérieur à la date grand public, permet de gérer ce cas sans dupliquer la fiche du spectacle. - La fonction de vérification accepte alors un paramètre indiquant si le visiteur est identifié comme abonné, sans complexifier l’affichage grand public.
Conseil maison : pensez toujours à vérifier l’API REST en plus du template visible. Un champ masqué à l’écran mais encore exposé par une requête REST reste une fuite d’information, même si elle passe inaperçue au premier regard.
En résumé
Masquer un tarif jusqu’à une date d’ouverture précise ne demande ni système de billetterie complet ni extension supplémentaire : une comparaison de dates, appliquée de façon cohérente au template comme à l’API REST, suffit à tenir la promesse de communication faite au public sans dévoiler le prix trop tôt.