# Rank Math contre SEOPress pour un thème compatible données structurées

> Comment les deux extensions SEO s'articulent avec le balisage schema.org d'un thème sur mesure, entre génération automatique et surcharge manuelle.

- Auteur : WordPress Développement
- Publié le : 2023-10-05
- Mis à jour le : 2023-10-05
- Catégorie : Thèmes
- URL : https://www.wpmoderne.fr/themes/rank-math-seopress-theme-donnees-structurees/

## L’essentiel

- Rank Math génère un balisage riche par défaut, moins de code thème
- SEOPress laisse plus de champs bruts à remplir dans le thème
- Les deux acceptent une surcharge via filtre PHP dédié

Un thème sur mesure bien construit ne devrait jamais entrer en conflit avec l'extension SEO installée par le client — et pourtant, c'est précisément ce qui arrive quand le balisage schema.org est codé en dur dans les templates sans tenir compte de ce que l'extension génère déjà. Ce constat, je l'ai fait sur deux projets menés la même année, l'un avec Rank Math, l'autre avec SEOPress, tous deux construits sur le même thème de base.

Voici ce que cette expérience comparée m'a appris sur la façon dont chaque extension s'articule avec un thème qui veut rester propre côté données structurées, sans dupliquer de balisage ni entrer en conflit avec l'extension.

## Deux philosophies de génération du balisage

Rank Math génère automatiquement un schéma assez complet dès l'activation, en s'appuyant sur le type de contenu et sur des réglages définis dans son interface : type d'article, organisation, avis, FAQ selon le contenu détecté. Le thème n'a presque rien à faire — sauf s'assurer qu'il ne réinjecte pas son propre balisage `Article` en parallèle dans `header.php`, ce qui provoquerait un doublon détectable à l'audit.

SEOPress, de son côté, propose un module de données structurées plus proche d'un formulaire à remplir manuellement par type de contenu, avec moins de génération automatique par défaut. Le thème garde alors un rôle plus actif : c'est souvent lui qui doit fournir certaines valeurs par défaut (image, auteur, date de mise à jour) quand l'administrateur du site n'a pas rempli les champs dédiés.

> L'essentiel à retenir : Rank Math génère un balisage riche par défaut, moins de code thème ; SEOPress laisse plus de champs bruts à remplir dans le thème ; Les deux acceptent une surcharge via filtre PHP dédié

## Le tableau comparatif retenu après les deux projets

| Critère | Rank Math | SEOPress |
| --- | --- | --- |
| Génération automatique du balisage Article | Oui, par défaut | Partielle, à configurer |
| Filtre PHP pour surcharger le schéma | `rank_math/json_ld` | `seopress_schemas_include` |
| Risque de doublon avec un balisage codé en thème | Élevé si non vérifié | Plus faible, moins de génération auto |
| Réglages par type de contenu | Interface dédiée par type | Champs dans chaque fiche de contenu |

## Connecter le thème à Rank Math sans dupliquer le balisage

Pour ajouter des propriétés spécifiques au métier du client (par exemple un balisage `Product` enrichi de caractéristiques propres au secteur), le filtre `rank_math/json_ld` permet d'injecter des données depuis le thème sans toucher au cœur du balisage déjà généré :

```
add_filter( 'rank_math/json_ld', function ( $donnees, $jsonld ) {
    if ( is_singular( 'produit' ) ) {
        $donnees['product']['material'] = get_post_meta( get_the_ID(), 'matiere', true );
    }

    return $donnees;
}, 10, 2 );
```

## Connecter le thème à SEOPress pour combler les champs manquants

Avec SEOPress, la logique s'inverse : le thème fournit une valeur par défaut quand le champ n'a pas été renseigné manuellement par l'administrateur, via le filtre `seopress_schemas_include`.

```
add_filter( 'seopress_schemas_include', function ( $activer ) {
    return is_singular( 'produit' ) ? true : $activer;
} );
```

Ce filtre active simplement le module de schéma sur le type de contenu concerné ; le remplissage des propriétés reste ensuite piloté depuis l'interface de l'extension, ce qui demande un temps de formation supplémentaire pour le client par rapport à Rank Math.

## Le point commun : ne jamais dupliquer le contexte Organization

Sur les deux projets, l'erreur la plus fréquente relevée en audit venait du thème : un balisage `Organization` codé en dur dans `header.php`, hérité d'un ancien projet, qui entrait en conflit avec celui généré par l'extension installée. La correction a été identique dans les deux cas : supprimer purement et simplement le balisage codé en thème et laisser l'extension SEO gérer ce niveau, quelle qu'elle soit.

> Un thème sur mesure ne devrait jamais porter de balisage `Organization` ou `WebSite` en dur : ce niveau appartient à l'extension SEO installée, quelle qu'elle soit. Le thème se contente d'enrichir les schémas spécifiques à ses propres types de contenu.

## Notre verdict

Pour un thème qui doit rester compatible avec plusieurs extensions SEO selon les clients, la règle est simple : ne jamais générer de balisage générique en dur, et prévoir un point d'extension via filtre pour chaque extension supportée. Rank Math demande moins d'intervention manuelle du client mais impose plus de rigueur au développeur pour éviter les doublons ; SEOPress demande l'inverse. Aucune des deux n'est universellement meilleure — le choix dépend de l'autonomie souhaitée par le client final.
