Fiches métiers dynamiques (WordPress).
Template WordPress qui génère 50+ fiches métiers FR/EN à partir de JSON structurés, avec rendu robuste sur des contenus variables.
wordpressphpjsonhtmlcss

Challenges
- 01.Industrialiser la génération de 50+ fiches à partir de structures hétérogènes
- 02.Gérer le multilingue (FR/EN) et la cohérence des slugs / URLs
- 03.Garantir un rendu propre même si certaines sections sont absentes (données incomplètes)
- 04.Rendre l’édition maintenable : contenu dans les JSON, affichage dans le template
Solutions
- 01.Template PHP découpé en blocs (missions, compétences, formations, CTA, etc.) alimentés par JSON
- 02.Système de fallback : section masquée si vide, valeurs par défaut, labels centralisés (common.json)
- 03.Mapping des slugs FR/EN pour des URLs stables et des liens de traduction cohérents
- 04.Contenus partagés (ex : contacts) référencés par ID pour éviter les duplications
Chargement JSON + rendu conditionnel (sans ACF)php
1// Déterminer la langue (ex : via WPML/Polylang ou une règle maison)2 $lang = function_exists('pll_current_language') ? pll_current_language('slug') : 'fr';34 // Exemple : URL -> .../marketing-communication/analyste-cybersecurite/5 // $category_slug et $job_slug proviennent du routage/template6 $category_slug = get_query_var('category_slug');7 $job_slug = get_query_var('job_slug');89 // Charger le JSON de la catégorie (fr/categories/<slug>.json)10 $json_path = get_stylesheet_directory() . "/fiches-metiers/{$lang}/categories/{$category_slug}.json";11 $items = file_exists($json_path) ? json_decode(file_get_contents($json_path), true) : [];1213 // Retrouver la fiche par slug14 $job = null;15 foreach ($items as $item) {16 if (($item['slug'] ?? '') === $job_slug) {17 $job = $item;18 break;19 }20 }21 if (!$job) {22 // 404 si fiche introuvable23 status_header(404);24 nocache_headers();25 include get_404_template();26 exit;27 }2829 // Exemple : rendre une section uniquement si la donnée existe30 $skills = $job['competences_block']['items'] ?? [];31 if (!empty($skills)) : ?>32 <section class="job-section">33 <h2>Compétences clés</h2>34 <ul>35 <?php foreach ($skills as $skill) : ?>36 <li><?php echo esc_html($skill); ?></li>37 <?php endforeach; ?>38 </ul>39 </section>40 <?php endif; ?>
→ SuiteAutres projets