Guide WordPress SEO

A SEO technique practitioner's guide à WordPress — le par défaut paramètres que hurt vous, comment le core sitemap et canonical handling en réalité fonctionner, pourquoi vous exécuter exactly un SEO plugin, et le duplicate-contenu sources WordPress crée on son propre.

Première publication : 27 juin 2026 · Dernière mise à jour : 3 août 2026 · Avancé

«WordPress is SEO-capable, not SEO-finished. It self-canonicalizes posts since version 2.9 and ships a native XML sitemap since 5.5 — but its defaults also leave ?p=123 permalinks, attachment pages, date/tag/author archives, feeds, and internal search results all indexable, and a single Settings → Reading checkbox can silently block the whole site. The fixes that actually matter: set /%postname%/ before publishing, run exactly one SEO plugin (Yoast, Rank Math, or AIOSEO — never two, the wp_head conflict produces duplicate metadata), noindex thin archives instead of disallowing them, and keep the sitemap to canonical indexable URLs only. WordPress 6.4+ disables attachment pages on new installs by default — redirecting straight to the file, not the parent post — but existing sites keep them on and must migrate manually. Google has never said WordPress ranks better or worse than any other CMS — content and links decide that, not the platform.» _(Traduction)_ (Résumé en français du champ tldr : le texte source est conservé pour relecture francophone.)

«> TL;DR — WordPress is SEO-capable, not SEO-finished. It self-canonicalizes

singular posts since version 2.9 and ships a native XML sitemap since 5.5 — but defaults leave ?p=123 permalinks, attachment pages, date/tag/author archives, feeds, and ?s= search pages all indexable, and the Settings → Reading checkbox can silently block the whole site. The fixes that move the needle: /%postname%/ before publishing, exactly one SEO plugin (the wp_head conflict from two is real), noindex thin archives rather than disallowing them, and a sitemap of canonical indexable URLs only. WordPress 6.4+ disables attachment pages by default on new installs — redirecting to the file itself, not the parent post; existing sites keep them enabled and migrate by hand. Google has never said WordPress is better or worse for SEO than any other CMS. Preuve à l’appui de cette affirmation WordPress added core XML sitemaps in 5.5 and attachment-page redirects for new sites in 6.4. Portée : Core version history; existing sites can retain prior attachment behavior. Niveau de confiance : élevé · Vérifié : WordPress 5.5 XML sitemaps WordPress 6.4 attachment pages » (Traduction) (Résumé en français de la section dix-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

WordPress is SEO-capable, pas SEO-finished

«The honest framing is somewhere between the two marketing claims you usually hear. WordPress is not “SEO-friendly out of the box” in any complete sense — but it also isn’t bad for SEO. It gives you a strong, controllable foundation and then leaves a pile of indexable cruft turned on by default. The whole job is knowing which defaults to change and which auto-generated URLs to suppress. » (Traduction) (Résumé en français de la section vingt, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Et à être clair up front: Google a jamais said WordPress se classe meilleur or pire que quelconque autre CMS. As Google’s documentation puts il, “si vous êtes en utilisant a CMS tel as WordPress, Wix, or Blogger, c’est probable que votre CMS a déjà fait a sitemap disponible à moteur de recherches” — le plateforme est treated comme quelconque autre. Rankings come depuis contenu et liens, pas depuis le logo dans votre admin bar. Preuve à l’appui de cette affirmation Google says common CMS platforms often generate sitemaps and does not prescribe a CMS-specific ranking advantage. Portée : Google sitemap guidance; absence of a CMS ranking advantage is an editorial inference from platform-neutral requirements. Niveau de confiance : medium · Vérifié : Google: Build and submit a sitemap

The defaults que hurt — and pourquoi

«The “Discourage search engines from indexing this site” checkbox (Settings → Reading) writes a site-wide noindex and a restrictive virtual robots.txt. It’s the first thing I check on any WordPress audit, because it’s the single setting that can silently zero out an entire site’s indexing — usually left on from staging. » (Traduction) (Résumé en français de la section vingt-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Le ?p=123 par défaut permalink donne aucun topical signal et n’est pas a clean URL. Switch à /%postname%/ — et faire il avant publishing. On an established site, modification le permalink structure signifie URL changements; WordPress va auto-301 le old numeric URLs pour standard post types, mais custom post types et pages ne pas toujours redirection cleanly, donc tester. je voudrais éviter baking le category dans le permalink (/%category%/%postname%/): le day vous reorganize taxonomy vous trigger a mass URL modifier et throw away classement history pour aucun proportional avantage.

Attachment pages sont le WordPress-spécifique gotcha personnes forget. Chaque media upload historically spawned a standalone URL containing simplement le fichier et some auto-metadata — thin pages que peut cannibalize le réel ones. WordPress 6,4 modifié le par défaut donc nouveau installs disable attachment pages entirely — une requête à un maintenant redirections straight à le fichier itself, pas le parent post. Existing (upgraded) sites garder attachment pages enabled; il y a aucun Paramètres-screen toggle pour ce, seulement wp option set wp_attachment_pages_enabled 0 via WP-CLI or editing le option directement on wp-admin/options.php. En pratique la plupart site owners jamais touch que option et à la place handle il le plugin façon: noindex le attachment page, or meilleur, redirection il à le parent post via votre SEO plugin. ne pas assume an older site inherited le WordPress 6,4 par défaut; il n’a pas.

«Archives, feeds, and search pages. By default WordPress generates indexable category archives, tag archives, date archives, author archives, paginated archive pages (?page=2), feed URLs (/feed/), attachment pages, and internal search result pages (/page=search, i.e. ?s=). That’s the canonical list of WordPress duplicate-content sources, and almost none of it was a decision you made. » (Traduction) (Résumé en français de la section vingt-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Contenu dupliqué WordPress creates on its propre

Worth stating plainly parce que it surprises personnes: WordPress manufactures structural contenu dupliqué by par défaut. The recurring sources:

SourceExempleTypical fix
Category archives/category/news/Garder, or noindex si thin
Tag archives/tag/wordpress/Usually noindex (thin, overlapping)
Author archives/author/admin/Noindex on single-author sites
Date archives/2023/04/Noindex (almost toujours thin)
Pagination/page/2/Self-referential canonical (pas page 1)
Feed URLs/feed/Noindex feeds
Attachment pages/photo-of-cat/Redirection to parent via SEO plugin (WP 6,4+ redirections nouveau installs to the fichier itself à la place)
Résultats de recherche/?s=keywordNoindex

Le corriger est presque jamais à panic à propos de a penalty — Google consolidates duplicates à a canonical plutôt que penalizing structural duplication. Le corriger est à noindex le thin stuff et garder le sitemap clean. Et a critical distinction: noindex ≠ aucun-explorer. A noindexed page doit stay crawlable donc Google peut en réalité lire le noindex. Si vous disallow il dans robots.txt à la place, Google ne peut pas voir le directive — qui est pourquoi vous noindex thin archives plutôt que blocking les.

Le XML sitemap: core vs. plugin

WordPress 5,5 (August 2020) ajouté a native XML sitemap à /wp-sitemap.xml. c’est réel, mais barebones. Il dumps dans tout public post types, tout public taxonomies, et author archives — meaning il happily listes exactly le thin pages vous vouloir out de le indexer. Il a aucun image-sitemap prise en charge et limited contrôler. Donc En pratique la plupart sites utiliser le sitemap depuis Yoast or Classer Math à la place, qui lets vous inclure/exclude spécifique post types et taxonomies et garder le fichier à canonical, indexable URLs. Yoast disables le core sitemap et remplace il; c’est attendu.

Deux choses le sitemap ne va pas faire pour vous: Google ignores <priority> et <changefreq> entirely (per Google’s propre docs), et WordPress ne fait pas submit le sitemap à Google pour vous — vous submit il dans Search Console et Bing Webmaster Outils, et vous pouvez liste il via a Sitemap: directive dans robots.txt pour passive discovery. Le 50 000-URL / 50MB limite depuis le spec encore s’applique; split dans a sitemap indexer past que.

Canonical handling: core, plugin, et le conflict trap

Core a sortie rel=canonical via rel_canonical() since WordPress 2,9 (2009) — singular posts et pages self-canonicalize. WordPress 4,6 n’a pas ajouter le balise; il refactored le function à utiliser le filterable wp_get_canonical_url(), qui est ce que personnes généralement signifier quand ils dire “canonical since 4.6.” c’est a bon baseline, mais core ne fait pas handle custom post types consistently à travers themes, ne fait pas ajouter canonicals on 404s, et ne fait pas resolve URL-variation duplicates (?utm_source=, www vs. non-www, trailing slashes) on son propre. SEO plugins remplacer le core sortie avec plus comprehensive handling: custom post type canonicals, self-referential pagination canonicals (pas pointing page 2+ à page 1 — a mistake que deindexes votre deepar pages), cross-domain canonical pour syndication, et per-page overrides.

Ici’s le trap que ties le entier plugin question ensemble: le balise canonical définir par votre SEO plugin est le authoritative signal — mais si votre theme aussi injects a titre balise or son propre SEO meta, vous obtenir a conflict. Some theme frameworks (Genesis, Thesis) emit leur propre SEO balises. Quand vous activate an SEO plugin, disable le theme-level SEO, et inspect le rendu <head> à confirmer exactly un canonical, un titre, un meta description.

Un SEO plugin. Jamais two.

Ce deserves son propre titre parce que c’est le la plupart courant self-inflicted WordPress SEO wound. Jamais exécuter deux SEO plugins simultaneously. Yoast, Classer Math, et AIOSEO tout hook dans wp_head() à écrire le titre, meta description, canonical, Ouvrir Graph/Twitter balises, robots meta, et JSON-LD. Exécuter deux et ils les deux fire — duplicate meta descriptions, duplicate (et contradictory) balise canonicals, conflicting Ouvrir Graph, et conflicting sitemaps. Search Console va flag le duplicate metadata. Pick un et entièrement uninstall le autre (deactivating laisse database entries behind).

As pour qui un — ils tout cover le core tasks; le choice est utiliser-case et budget:

  • Yoast SEO — le largest install base, le familiar traffic-light scoring, great pour beginners et contenu teams que vouloir a guided workflow. (WooCommerce schema est a payant ajouter-on.)
  • Classer Math — le la plupart generous gratuit tier: unlimited focus mots-clés, redirection manager, 404 monitoring, GSC + GA4 integration, et a strong schema builder (16+ types gratuit). Mon pick pour developers et power utilisateurs.
  • Tout dans Un SEO (AIOSEO) — strong WooCommerce integration, internal-lien assistant, bon local SEO. Suits agencies et grand stores.

Un caution on Yoast’s green lights: a plus élevé Yoast score ne fait pas signifier meilleur rankings. c’est a heuristic pour basic sur la page formatting — mot-clé presence, titre length, readability proxies. A red-light post routinely outranks an tous-green un. Qualité du contenu, intent match, autorité, et liens matter far plus.

Schema: ce que WordPress fait and doesn’t output

«Core WordPress outputs essentially nothing useful for rich results — clean HTML Google can parse, but no JSON-LD. As Google notes, “if you use a CMS, such as Wix, WordPress, or Shopify, you might not be able to edit your HTML directly… you may be able to install a plugin that allows you to specify structured data.” That’s the path: » (Traduction) (Résumé en français de la section quarante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

  • Yoast auto-ajoute Organization/Person, Site web (avec SearchAction), WebPage, BreadcrumbList, et Article schema dans JSON-LD.
  • Classer Math ajoute ceux plus 16+ schema types dans le gratuit tier (FAQ, HowTo, Produit, Examiner, Event…) et a builder pour custom types.
  • WooCommerce alone outputs basic Ouvrir Graph produit metadata mais aucun Produit JSON-LD — vous besoin Yoast WooCommerce SEO (payant) or Classer Math Pro pour complet Produit schema avec price, availability, et examiner aggregate.

«## WooCommerce, briefly » (Traduction) (Résumé en français de la section quarante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«WooCommerce stacks more SEO surface on top of standard WordPress. The recurring issues: the /product/ and /product-category/ URL bases (removable, with redirects on existing sites), product variations creating near-duplicates, and — the big one — faceted navigation generating thousands of thin filter-combination URLs. Handle facets the same way you’d handle them anywhere: ideally JS-based filtering with no URL change, otherwise rel=canonical to the base category and/or noindex, follow on filter pages (with crawling allowed so the directive is seen). Shop and category pagination wants self-referential canonicals, and Google deprecated rel=prev/next back in 2019 — harmless if present, but don’t rely on it. Faceted nav has its own deep treatment in the Ecommerce SEO pillar. » (Traduction) (Résumé en français de la section quarante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## robots.txt and Core Web Vitals — two quick notes » (Traduction) (Résumé en français de la section quarante-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«WordPress serves a virtual robots.txt (it’s not a file on disk) defaulting to disallowing /wp-admin/ while allowing admin-ajax.php. Drop a physical file at the root and it overrides the virtual one entirely; SEO plugins let you edit the virtual version from the dashboard. The classic mistake is disallowing /wp-content/, which blocks CSS/JS/images and breaks rendering — don’t. » (Traduction) (Résumé en français de la section quarante-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

On performances: le “WordPress est lent” complaint est a configuration problème, pas a core problème. LCP problèmes trace mostly à TTFB (cheap shared hosting, aucun opcode cache) et unoptimized hero images; INP problèmes à JavaScript bloat depuis page builders (Elementor, Divi); CLS à images sans dimensions et web fonts sans font-display: swap. Lightweight themes (GeneratePress, Kadence, Astra) plus a mise en cache plugin, a CDN, et modern image formats obtenir a well-built WordPress site via Core Web Vitals comfortably. Le detail lives dans le Web Performances cluster.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.