/<?php /* Plugin Name: LTDC — Formation Manager Contact Client (Shortcode) Description: Shortcode [ltc_formation_manager_contact_client] affichant la page de formation (neutre, responsive, accessible) sans Elementor. Version: 1.0.0 Author: Le Temps du Client */ if (!defined(‘ABSPATH’)) exit; function ltc_fmcc_shortcode($atts = []) { $a = shortcode_atts([ ‘title’ => ‘Formation Manager Contact Client — Fidéliser • Pacifier • Reconquérir’, ‘tagline’ => ‘Transformer les réclamations en opportunités de fidélisation, avec méthode et sérénité.’, ‘programme’ => », // URL programme.pdf (recommandé) ‘illustration’ => », // URL image (optionnel) ‘date’ => ‘à définir’, ‘lieu’ => ‘sur site — dans votre restaurant’, ‘duree’ => ‘1 jour (8 h)’, ‘participants’ => ‘8 à 12’, ‘tarif’ => ‘240 € HT / participant’, ‘contact_email’ => ‘philippe.chazal@letempsduclient.com’, ‘contact_phone’ => ‘+33145461100’, ‘contact_phone_display’ => ’01 45 46 11 00′, ‘contact_address’ => ’21 Grand Rue, 86260 St Pierre de Maillé’, ‘contact_url’ => ‘https://www.letempsduclient.com/formation-manager-contact-client’, ‘brand_bg’ => ‘#ffffff’, ‘brand_surface’ => ‘#f8fafc’, ‘brand_primary’ => ‘#f28c00’, ‘brand_primary_contrast’ => ‘#ffffff’, ‘brand_text’ => ‘#1e2430’, ‘brand_muted’ => ‘#6b7380’, ‘brand_border’ => ‘#e5e9ef’, ], $atts, ‘ltc_formation_manager_contact_client’); // Sanitization $title = esc_html($a[‘title’]); $tagline = esc_html($a[‘tagline’]); $programme = esc_url($a[‘programme’]); $illustration = esc_url($a[‘illustration’]); $date = esc_html($a[‘date’]); $lieu = esc_html($a[‘lieu’]); $duree = esc_html($a[‘duree’]); $participants = esc_html($a[‘participants’]); $tarif = esc_html($a[‘tarif’]); $contact_email = antispambot($a[‘contact_email’]); $contact_phone_display = esc_html($a[‘contact_phone_display’]); $tel_href = preg_replace(‘/[^\d\+]/’, », $a[‘contact_phone’]); // tel:+33… $contact_address = esc_html($a[‘contact_address’]); $contact_url = esc_url($a[‘contact_url’]); $brand_bg = esc_attr($a[‘brand_bg’]); $brand_surface = esc_attr($a[‘brand_surface’]); $brand_primary = esc_attr($a[‘brand_primary’]); $brand_primary_contrast = esc_attr($a[‘brand_primary_contrast’]); $brand_text = esc_attr($a[‘brand_text’]); $brand_muted = esc_attr($a[‘brand_muted’]); $brand_border = esc_attr($a[‘brand_border’]); ob_start(); ?> <style> :root{ –brand-bg: <?php echo $brand_bg; ?>; –brand-surface: <?php echo $brand_surface; ?>; –brand-primary: <?php echo $brand_primary; ?>; –brand-primary-contrast: <?php echo $brand_primary_contrast; ?>; –brand-text: <?php echo $brand_text; ?>; –brand-muted: <?php echo $brand_muted; ?>; –brand-border: <?php echo $brand_border; ?>; –radius: 12px; –shadow: 0 8px 24px rgba(0,0,0,0.06); –focus: 0 0 0 3px rgba(242,140,0,0.28); –font: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; } .ltc-wrap{ max-width: 980px; margin: 0 auto; padding: 24px; font-family:var(–font); color:var(–brand-text); } .ltc-one{ background:var(–brand-surface); border:1px solid var(–brand-border); border-radius:var(–radius); box-shadow:var(–shadow); padding:clamp(20px,3.5vw,36px); } .ltc-head{ display:flex; gap:16px; align-items:flex-start; margin-bottom:10px; } .ltc-title{ margin:0; font-size:clamp(22px,3vw,32px); line-height:1.2; } .ltc-tagline{ margin:6px 0 0; color:var(–brand-muted); font-size:clamp(14px,1.8vw,16px); } .ltc-hero{ margin-top:12px; } .ltc-hero img{ width:100%; height:auto; border-radius:12px; border:1px solid var(–brand-border); object-fit:cover; } .ltc-meta{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 20px; color:var(–brand-muted); } .ltc-chip{ border:1px solid var(–brand-border); border-radius:999px; padding:6px 10px; background:#fff; font-size:14px; } .ltc-actions{ display:flex; gap:12px; flex-wrap:wrap; margin:16px 0 24px; } .ltc-btn{ appearance:none; border:1px solid var(–brand-primary); background:var(–brand-primary); color:var(–brand-primary-contrast); padding:10px 14px; border-radius:10px; cursor:pointer; text-decoration:none; font-weight:600; font-size:15px; } .ltc-btn–alt{ background:#fff; color:var(–brand-primary); border-color:var(–brand-primary); } .ltc-btn.is-disabled{ opacity:.6; cursor:not-allowed; } .ltc-accordion{ border-top:1px solid var(–brand-border); } .ltc-acc-item{ border-bottom:1px solid var(–brand-border); } .ltc-acc-btn{ width:100%; text-align:left; background:transparent; border:0; padding:16px 0; font-size:17px; font-weight:700; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:12px; } .ltc-acc-btn:focus{ outline:none; box-shadow:var(–focus); border-radius:6px; } .ltc-acc-icon{ width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(–brand-border); border-radius:6px; background:#fff; color:var(–brand-muted); flex:0 0 auto; } .ltc-acc-panel{ display:none; padding:0 0 16px 0; color:#2a3140; } .ltc-acc-panel.open{ display:block; } .ltc-note{ background:#fff; border:1px dashed var(–brand-border); padding:12px; border-radius:10px; color:var(–brand-muted); font-size:14px; } .ltc-footer{ margin-top:22px; background:#fff; border:1px solid var(–brand-border); border-radius:12px; padding:14px; display:grid; gap:8px; } .ltc-footer small{ color:var(–brand-muted); } .ltc-wrap a{ color:var(–brand-primary); } .ltc-wrap a:focus{ outline:none; box-shadow:var(–focus); border-radius:6px; } </style> <div class= »ltc-wrap »> <section class= »ltc-one » aria-label= »Formation Manager Contact Client »> <header class= »ltc-head »> <div> <h1 class= »ltc-title »><?php echo $title; ?></h1> <p class= »ltc-tagline »><?php echo $tagline; ?></p> </div> </header>
<?php if (!empty($illustration)) : ?>
<div class="ltc-hero">
<img src="<?php echo $illustration; ?>" alt="Illustration neutre sur la relation client en restauration" />
</div>
<?php endif; ?>
<div class="ltc-meta" role="list" aria-label="Informations pratiques">
<span class="ltc-chip" role="listitem">Date : <?php echo $date; ?></span>
<span class="ltc-chip" role="listitem">Lieu : <?php echo $lieu; ?></span>
<span class="ltc-chip" role="listitem">Durée : <?php echo $duree; ?></span>
<span class="ltc-chip" role="listitem">Participants : <?php echo $participants; ?></span>
<span class="ltc-chip" role="listitem">Tarif : <?php echo $tarif; ?></span>
</div>
<div class="ltc-actions" aria-label="Documents utiles">
<?php if (!empty($programme)) : ?>
<a class="ltc-btn" href="<?php echo $programme; ?>" target="_blank" rel="noopener">Télécharger le programme (PDF)</a>
<?php else: ?>
<button class="ltc-btn is-disabled" type="button" aria-disabled="true" title="Programme à venir">Programme (bientôt disponible)</button>
<?php endif; ?>
<button class="ltc-btn ltc-btn--alt is-disabled" type="button" aria-disabled="true" title="Remis pendant la session (non téléchargeable)">Livret stagiaire (remis pendant la session)</button>
</div>
<div class="ltc-note" role="note">
Version neutre — aucune utilisation de logo d’enseigne externe. Le livret stagiaire est remis aux participants pendant la session et n’est pas diffusé en téléchargement.
</div>
<h2 style="margin-top:24px; font-size:20px;">Programme par modules</h2>
<div class="ltc-accordion" id="programme-accordion">
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-1" id="control-1">
<span>Module 1 — Enjeux pour le client, l’équipe et l’entreprise (09:00–10:00)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-1" class="ltc-acc-panel" role="region" aria-labelledby="control-1" hidden>
<ul>
<li>Clients heureux et employés engagés</li>
<li>Évolutions des attentes, moments de vérité</li>
<li>Récolte des attentes, autodiagnostic relation client</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-2" id="control-2">
<span>Module 2 — Postures en cas de réclamation (10:10–11:00)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-2" class="ltc-acc-panel" role="region" aria-labelledby="control-2" hidden>
<ul>
<li>Profils de clients qui réclament</li>
<li>Les 5 étapes de la reconquête client</li>
<li>Les 7 attitudes qui enveniment — à éviter</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-3" id="control-3">
<span>Module 3 — Recueillir et traiter un feedback client (11:00–12:00)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-3" class="ltc-acc-panel" role="region" aria-labelledby="control-3" hidden>
<ul>
<li>Signatures de service et moments de vérité</li>
<li>4 principes pour entrer en contact, écoute active</li>
<li>Questions ouvertes et formulations positives</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-4" id="control-4">
<span>Module 4 — Mise en pratique filmée (in situ) (12:00–13:15)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-4" class="ltc-acc-panel" role="region" aria-labelledby="control-4" hidden>
<ul>
<li>Enregistrement de séquences au contact client</li>
<li>Expérimentation de nouveaux comportements</li>
<li>Débriefing collectif orienté progrès</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-5" id="control-5">
<span>Pause déjeuner (13:15–14:00)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-5" class="ltc-acc-panel" role="region" aria-labelledby="control-5" hidden>
<p>Temps de pause.</p>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-6" id="control-6">
<span>Module 5 — Validation et amélioration des pratiques (14:15–15:50)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-6" class="ltc-acc-panel" role="region" aria-labelledby="control-6" hidden>
<ul>
<li>Identifier les comportements efficaces</li>
<li>Corrections et ancrages</li>
<li>Révélation des talents</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-7" id="control-7">
<span>Module 6 — Pacifier une relation tendue (16:00–16:50)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-7" class="ltc-acc-panel" role="region" aria-labelledby="control-7" hidden>
<ul>
<li>Attitude positive et gestion du stress</li>
<li>Gérer l’agressivité d’un client</li>
<li>Postures, mots et gestes à privilégier</li>
</ul>
</div>
</div>
<div class="ltc-acc-item">
<button class="ltc-acc-btn" aria-expanded="false" aria-controls="panel-8" id="control-8">
<span>Module 7 — Reconquête client et plan d’action (17:00–17:30)</span>
<span class="ltc-acc-icon" aria-hidden="true">+</span>
</button>
<div id="panel-8" class="ltc-acc-panel" role="region" aria-labelledby="control-8" hidden>
<ul>
<li>Situations à escalader au responsable</li>
<li>Choix d’un axe prioritaire de développement</li>
<li>Plan d’action individuel</li>
</ul>
</div>
</div>
</div>
<div class="ltc-footer" aria-label="Informations complémentaires">
<div>
<strong>Public visé</strong> : Managers, Directeurs Adjoints, Hôte(sse)s principal(e)s<br/>
<strong>Prérequis</strong> : première expérience en relation client<br/>
<strong>Méthodes pédagogiques</strong> : ateliers participatifs, partages d’expériences, jeux de rôles, vidéos, exercices ludiques, mises en situation filmées.
</div>
<div>
<strong>Intervenant</strong> : Philippe Chazal — consultant-formateur (relation client & management)
</div>
<div>
<strong>Contact</strong> :
<a href="mailto:<?php echo $contact_email; ?>"><?php echo $contact_email; ?></a> ·
<a href="tel:<?php echo esc_attr($tel_href); ?>"><?php echo $contact_phone_display; ?></a> ·
<?php echo $contact_address; ?> ·
<a href="<?php echo $contact_url; ?>" target="_blank" rel="noopener"><?php echo $contact_url; ?></a>
</div>
<small>Tarif incluant supports et déplacement de l’intervenant — hors location de salle éventuelle. Lieux de formation accessibles PMR. Besoin d’adaptation ? Contactez le référent handicap : <?php echo $contact_email; ?>.</small>
</div>
</section>
</div> <script> (function(){ const items = document.querySelectorAll(‘.ltc-acc-item’); items.forEach(item => { const btn = item.querySelector(‘.ltc-acc-btn’); const panel = item.querySelector(‘.ltc-acc-panel’); const icon = item.querySelector(‘.ltc-acc-icon’); if(!btn || !panel) return; btn.addEventListener(‘click’, () => { const expanded = btn.getAttribute(‘aria-expanded’) === ‘true’; document.querySelectorAll(‘.ltc-acc-btn[aria-expanded= »true »]’).forEach(openBtn=>{ if(openBtn !== btn){ openBtn.setAttribute(‘aria-expanded’,’false’); const p = document.getElementById(openBtn.getAttribute(‘aria-controls’)) || openBtn.parentElement.querySelector(‘.ltc-acc-panel’); if(p){ p.hidden = true; p.classList.remove(‘open’); } const ic = openBtn.parentElement.querySelector(‘.ltc-acc-icon’); if(ic) ic.textContent = ‘+’; } }); btn.setAttribute(‘aria-expanded’, String(!expanded)); panel.hidden = expanded; panel.classList.toggle(‘open’, !expanded); if(icon) icon.textContent = expanded ? ‘+’ : ‘−’; }); }); // Navigation clavier (flèches) entre titres document.addEventListener(‘keydown’, (e)=>{ if(e.key!==’ArrowDown’ && e.key!==’ArrowUp’) return; const buttons = Array.from(document.querySelectorAll(‘.ltc-acc-btn’)); const idx = buttons.indexOf(document.activeElement); if(idx < 0) return; e.preventDefault(); const next = e.key===’ArrowDown’ ? (idx+1)%buttons.length : (idx-1+buttons.length)%buttons.length; buttons[next].focus(); }); })(); </script> <?php return ob_get_clean(); } add_shortcode(‘ltc_formation_manager_contact_client’, ‘ltc_fmcc_shortcode’)