IÉSEG · Voir en ligne

Fiches métiers dynamiques (WordPress)

Développement d’un template WordPress pour générer 50+ fiches métiers à partir de données JSON structurées (FR/EN). Objectif : un rendu robuste malgré des contenus variables, et une mise à jour simple côté équipes.

WordPressPHPJSONHTMLCSS
Année
2025
Stack
WordPress · PHP · JSON · HTML · CSS
Type
Réalisation
Rôle
Dev front + UX

Aperçu

Fiches métiers dynamiques (WordPress)

Conception & réalisation

Problèmes rencontrés, décisions UX et livrables.

Problèmes identifiés

4 points
  1. 1.Industrialiser la génération de 50+ fiches à partir de structures hétérogènes
  2. 2.Gérer le multilingue (FR/EN) et la cohérence des slugs / URLs
  3. 3.Garantir un rendu propre même si certaines sections sont absentes (données incomplètes)
  4. 4.Rendre l’édition maintenable : contenu dans les JSON, affichage dans le template

Actions réalisées

4 livrables
  1. 1.Template PHP découpé en blocs (missions, compétences, formations, CTA, etc.) alimentés par JSON
  2. 2.Système de fallback : section masquée si vide, valeurs par défaut, labels centralisés (common.json)
  3. 3.Mapping des slugs FR/EN pour des URLs stables et des liens de traduction cohérents
  4. 4.Contenus partagés (ex : contacts) référencés par ID pour éviter les duplications

Code

php
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';
3
4 // Exemple : URL -> .../marketing-communication/analyste-cybersecurite/
5 // $category_slug et $job_slug proviennent du routage/template
6 $category_slug = get_query_var('category_slug');
7 $job_slug = get_query_var('job_slug');
8
9 // 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) : [];
12
13 // Retrouver la fiche par slug
14 $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 introuvable
23 status_header(404);
24 nocache_headers();
25 include get_404_template();
26 exit;
27 }
28
29 // Exemple : rendre une section uniquement si la donnée existe
30 $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; ?>

Suite du parcours

Accéder aux autres projets ou me contacter.

Fiches métiers dynamiques (WordPress) | Louis Rotellini | Louis Rotellini