SEO

Schema.org JSON-LD : guide d’implémentation pour WordPress 2026

Publié le 31 March 2026 — 5 min de lecture
En bref

Guide complet Schema.org JSON-LD pour WordPress : types utiles, exemples de code, validation Rich Results Test et implémentation sans plugin.

Introduction : pourquoi JSON-LD est la norme pour les données structurées

Les données structurées permettent aux moteurs de recherche de mieux comprendre votre contenu et d’afficher des résultats enrichis (rich snippets) dans les SERP : étoiles de notation, FAQ dépliable, recette avec temps de cuisson, prix de produit… En 2026, avec l’essor de l’IA générative dans les résultats Google (SGE), les données structurées sont encore plus importantes pour aider Google à extraire et présenter vos informations.

JSON-LD (JavaScript Object Notation for Linked Data) est le format recommandé par Google car il s’intègre dans une balise <script> sans mélanger données et HTML, contrairement à Microdata ou RDFa.

Pourquoi choisir JSON-LD plutôt que Microdata ?

Critère JSON-LD Microdata
Recommandation Google Oui (préféré) Supporté
Séparation contenu/données Totale (dans script) Non (inline HTML)
Facilité de maintenance Élevée Faible
Duplication du contenu Non nécessaire Nécessaire
Intégration PHP/WordPress Facile Complexe

Les types Schema.org les plus utiles pour WordPress

LocalBusiness : pour les entreprises locales

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Agence Web Paris",
  "image": "https://example.com/logo.png",
  "@id": "https://example.com/#organisation",
  "url": "https://example.com",
  "telephone": "+33-1-23-45-67-89",
  "priceRange": "€€€",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Rue de la Paix",
    "addressLocality": "Paris",
    "postalCode": "75001",
    "addressCountry": "FR"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 48.8698,
    "longitude": 2.3078
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "18:00"
  }]
}
</script>

FAQPage : pour les sections FAQ

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Combien coûte un site WordPress ?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Un site WordPress vitrine coûte entre 1500€ et 4000€ selon la complexité."
    }
  },{
    "@type": "Question",
    "name": "Combien de temps pour créer un site WordPress ?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Comptez 3 à 8 semaines pour un site vitrine, 8 à 16 semaines pour un e-commerce."
    }
  }]
}
</script>

HowTo : pour les tutoriels

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Comment installer WordPress",
  "estimatedCost": {"@type": "MonetaryAmount", "currency": "EUR", "value": "0"},
  "totalTime": "PT30M",
  "step": [{
    "@type": "HowToStep",
    "name": "Télécharger WordPress",
    "text": "Téléchargez WordPress.org et décompressez l'archive.",
    "position": 1
  },{
    "@type": "HowToStep",
    "name": "Créer la base de données",
    "text": "Créez une base MySQL via votre hébergeur.",
    "position": 2
  }]
}
</script>

BlogPosting : pour les articles de blog

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Titre de l'article",
  "image": "https://example.com/image.jpg",
  "author": {
    "@type": "Person",
    "name": "Jean Dupont",
    "url": "https://example.com/auteur/jean"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Mon Site",
    "logo": {"@type": "ImageObject", "url": "https://example.com/logo.png"}
  },
  "datePublished": "2026-01-15",
  "dateModified": "2026-03-01",
  "description": "Description courte de l'article pour les moteurs de recherche."
}
</script>
// BreadcrumbList
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "name": "Accueil",
    "item": "https://example.com/"
  },{
    "@type": "ListItem",
    "position": 2,
    "name": "Blog",
    "item": "https://example.com/blog/"
  },{
    "@type": "ListItem",
    "position": 3,
    "name": "Titre de l'article"
  }]
}

// Product (WooCommerce)
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Nom du produit",
  "image": "https://example.com/produit.jpg",
  "description": "Description du produit.",
  "sku": "REF-001",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/produit/",
    "priceCurrency": "EUR",
    "price": "29.99",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "127"
  }
}

Valider avec Rich Results Test

Google propose l’outil Rich Results Test (search.google.com/test/rich-results) pour valider vos données structurées. Entrez l’URL de votre page ou collez le code HTML, l’outil détecte les types de données structurées, affiche les erreurs et avertissements, et simule l’affichage dans les résultats enrichis.

Vous pouvez aussi utiliser le Schema Markup Validator (validator.schema.org) pour une validation plus complète contre la spécification Schema.org officielle.

Implémenter JSON-LD sans plugin dans WordPress

<?php
// Dans functions.php du thème ou dans un plugin
add_action( 'wp_head', 'mon_theme_json_ld_schema' );
function mon_theme_json_ld_schema() {
    if ( is_singular( 'post' ) ) {
        global $post;
        $schema = array(
            '@context'      => 'https://schema.org',
            '@type'         => 'BlogPosting',
            'headline'      => get_the_title( $post ),
            'image'         => get_the_post_thumbnail_url( $post, 'full' ) ?: '',
            'datePublished' => get_the_date( 'c', $post ),
            'dateModified'  => get_the_modified_date( 'c', $post ),
            'author'        => array(
                '@type' => 'Person',
                'name'  => get_the_author_meta( 'display_name', $post->post_author ),
            ),
            'description'   => get_the_excerpt( $post ),
        );
        echo '<script type="application/ld+json">';
        echo wp_json_encode( $schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT );
        echo '</script>' . PHP_EOL;
    }
}
?>

Pour une implémentation SEO avancée avec données structurées sur mesure, notre consultant SEO Paris peut prendre en charge votre projet.

Questions fréquentes sur Schema.org JSON-LD WordPress

Les données structurées JSON-LD améliorent-elles directement le classement Google ?

Les données structurées ne sont pas un facteur de classement direct selon Google. En revanche, elles permettent d’obtenir des rich snippets (étoiles, FAQ, recette…) qui augmentent le CTR dans les SERP, et un meilleur CTR peut indirectement améliorer votre positionnement. De plus, elles aident Google à mieux comprendre votre contenu, ce qui peut favoriser l’apparition dans les résultats zero-click et les extraits SGE.

Faut-il utiliser Yoast SEO ou RankMath pour les données structurées ?

Ces plugins génèrent automatiquement les schémas de base (Article, BreadcrumbList, Organization). Pour des besoins standards, ils suffisent largement. Mais pour des types spéciaux (Product, Recipe, Event, LocalBusiness détaillé), le code PHP personnalisé reste plus flexible. Vérifiez toujours ce que génère votre plugin avec Rich Results Test pour éviter les doublons ou contradictions.

Peut-on avoir plusieurs blocs JSON-LD sur la même page ?

Oui, Google accepte et encourage plusieurs blocs <script type="application/ld+json"> sur la même page. Chaque bloc peut contenir un type différent. Vous pouvez aussi utiliser un tableau JSON-LD (@graph) pour regrouper plusieurs entités liées et faciliter les relations entre elles (pratique pour la Knowledge Graph).

Schema.org fonctionne-t-il pour les sites en français ?

Absolument. Schema.org est indépendant de la langue. Le contenu des champs (name, description, text) doit être dans la langue du site. Pour indiquer la langue, utilisez "inLanguage": "fr" dans vos schémas. Les rich snippets s’affichent dans tous les pays et langues supportés par Google.

W
Rédigé par
WebEngine
Développeur web freelance à Paris spécialisé WordPress, WooCommerce et SEO technique depuis 2010. 13 avis vérifiés · Note 5/5. Chaque site livré atteint un score PageSpeed mobile supérieur à 90.

Un projet en tête ?

Devis gratuit sous 48h, sans engagement.

Demander un devis gratuit