Étude

Programme multi-marques WordPress: pages locales et mesure pour un réseau à Genève

Programme multi-marques WordPress à Genève: création de pages locales cohérentes, données structurées LocalBusiness, SEO local et suivi des conversions via GA4. Un réseau plus visible, plus simple à gérer et mieux mesuré.

Contexte

Un réseau de services présent en Suisse romande pilotait plusieurs entités sous marques proches. Le site principal existait, mais les pages locales étaient gérées de manière manuelle, avec des contenus hétérogènes et une visibilité inégale selon les zones. L’équipe voulait une base unique, facile à maintenir, tout en gardant une présentation locale crédible pour les personnes qui cherchent un prestataire à Genève.

Objectifs

  • Mettre en place un programme multi-marques cohérent sur WordPress, avec des pages locales réutilisables.
  • Renforcer le SEO local: structure claire, contenus citables (GEO) et données structurées.
  • Normaliser les informations utiles (adresse, horaires, zone d’intervention, contact) sans dupliquer du texte inutile.
  • Mesurer les conversions: clics téléphone, clics e-mail, envoi formulaire, demandes de rappel.

Diagnostic initial

  • Contenu : variations de ton et de structure entre pages locales, titres peu alignés sur l’intention de recherche.
  • SEO : maillage interne faible entre pages, absence de données structurées locales.
  • Exploitation : mises à jour fastidieuses, risques d’erreurs lors des changements d’horaires ou de contacts.
  • Mesure : GA4 présent, mais sans événements locaux (clic itinéraire, clic téléphone, formulaire).

Approche mise en place

Le site a été structuré pour produire des pages locales consistantes, tout en laissant de la place à des spécificités par marque. La logique a été: un socle commun (modèles, champs, SEO), puis des variations contrôlées (contenu, offres, zones).

1) Modèles Gutenberg et contenu réutilisable

  • Création de modèles de pages locales: introduction, services, preuves, FAQ courte, contact.
  • Patterns Gutenberg pour garder une mise en page stable et rapide à éditer.
  • Sections conçues pour le mobile: informations pratiques visibles sans scroller trop longtemps.

2) Données structurées et SEO local

  • Ajout de données structurées de type LocalBusiness ou Organization selon le cas.
  • Pages locales construites autour d’un angle clair: ville + service + preuve.
  • Maillage interne: pages marques vers pages locales, et inversement, avec ancres explicites.

3) Intégrations et automatisation

  • Normalisation des données locales via champs (ACF): adresse, téléphone, horaires, URL prise de rendez-vous.
  • Connexion des demandes vers un outil de traitement (selon contexte): e-mail + CRM, ou Zapier/Make.
  • Réduction des manipulations manuelles lors des changements (ex. horaires saisonniers).

4) Mesure (GA4 + Search Console)

  • Événements utiles: clic téléphone, clic e-mail, clic itinéraire, envoi formulaire.
  • Lecture simple par localité: pages locales, sources, conversions.
  • Contrôle mensuel: indexation, requêtes locales, pages qui performent, points à améliorer.

Exemple technique : pages locales pilotées par ACF + JSON-LD LocalBusiness

Exemple de code propre pour gérer des fiches « Localité » via un type de contenu dédié, puis injecter un JSON-LD par page. À placer dans un mu-plugin ou dans un plugin dédié.

<?php
/**
 * 1) Déclare un CPT "localite" pour des pages locales propres.
 */
add_action('init', function () {
  register_post_type('localite', [
    'labels' => [
      'name' => 'Localités',
      'singular_name' => 'Localité',
    ],
    'public' => true,
    'has_archive' => false,
    'show_in_rest' => true,
    'menu_icon' => 'dashicons-location',
    'supports' => ['title', 'editor', 'thumbnail', 'revisions'],
    'rewrite' => ['slug' => 'zones'],
  ]);
});

/**
 * 2) Injecte un JSON-LD LocalBusiness si des champs ACF existent.
 * Champs ACF attendus (exemples):
 * - cc_phone (texte)
 * - cc_street (texte)
 * - cc_postcode (texte)
 * - cc_city (texte)
 * - cc_region (texte)
 */
add_action('wp_head', function () {
  if (is_admin() || !is_singular('localite')) return;

  if (!function_exists('get_field')) return;

  $phone    = (string) get_field('cc_phone');
  $street   = (string) get_field('cc_street');
  $postcode = (string) get_field('cc_postcode');
  $city     = (string) get_field('cc_city');
  $region   = (string) get_field('cc_region');

  $data = [
    '@context' => 'https://schema.org',
    '@type'    => 'LocalBusiness',
    'name'     => get_the_title(),
    'url'      => get_permalink(),
    'telephone' => $phone ?: null,
    'address'  => [
      '@type'           => 'PostalAddress',
      'streetAddress'   => $street ?: null,
      'postalCode'      => $postcode ?: null,
      'addressLocality' => $city ?: null,
      'addressRegion'   => $region ?: null,
      'addressCountry'  => 'CH',
    ],
  ];

  // Nettoyage des valeurs null pour un JSON-LD plus propre
  $data['address'] = array_filter($data['address']);
  $data = array_filter($data);

  echo "\n<script type=\"application/ld+json\">" .
    wp_json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) .
  "</script>\n";
});

Résultats observés

  • Pages locales cohérentes, plus simples à maintenir, avec informations pratiques homogènes.
  • Meilleure compréhension du contexte local par les moteurs grâce aux données structurées.
  • Maillage interne plus clair, donc une navigation plus logique pour les visiteurs.
  • Conversions mesurables par type d’action (appel, e-mail, formulaire), avec une lecture utile dans GA4.

Points clés à retenir

  • Un programme multi-marques fonctionne mieux quand les pages locales suivent un modèle commun, avec des variations contrôlées.
  • Les données structurées aident à clarifier qui fait quoi, et où, surtout en SEO local.
  • La mesure doit suivre des actions concrètes, pas seulement des visites.

Un projet similaire ou un souci WordPress ?

Que ce soit pour lancer un projet, améliorer un site existant ou résoudre un problème, on vous aide à clarifier la situation et à avancer simplement.