[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fmCPUj1tB4sint-YGOX4Wgs9t88S6SkDfQNxuhbguwVA":3,"$facr8_sd-Xjrk_eXXSJ4Hxn2iIZhY7Hm1LO5xZDPmCiM":24,"$fcTFjTaPPT1sVcnh1wWEGoTWMSaOD4bwmwntkMae6w5s":112},{"_id":4,"slug":5,"__v":6,"author":7,"body":8,"canonical":9,"category":10,"createdAt":11,"date":12,"description":13,"htmlContent":14,"image":15,"imageAlt":15,"readingTime":16,"tags":17,"title":22,"updatedAt":23},"6a2d7ef3aa6b273b0c80d69d","yoast-seo-desactive-par-un-update-plugin-fallback-meta-vides-sur-80-du-blog",0,"Equipe Seogard","# Yoast SEO désactivé par un update plugin : 1 200 articles sans meta pendant 19 jours\n\nJeudi 22 mai, 3h12 du matin. Le cron WordPress d'un magazine tech français déclenche les mises à jour automatiques. Parmi elles, un plugin tiers de cache objet passe en version 4.0. Le log indique \"update successful\". Aucune alerte. Aucun email d'erreur. Pourtant, à cet instant précis, Yoast SEO Premium 23.4 vient de se désactiver. 1 200 articles — 80 % du blog — servent désormais des balises `\u003Ctitle>` génériques et des meta descriptions vides. L'équipe ne le découvrira que 19 jours plus tard.\n\n## Mardi 10 juin, 9h14 — \"Pourquoi le trafic organique s'effondre ?\"\n\nLa responsable acquisition ouvre son dashboard Looker Studio. Le trafic organique hebdomadaire est passé de 42 000 sessions à 28 000. Chute de 33 %. Elle vérifie GA4 : pas de problème de tracking, le tag est bien en place. Elle envoie un message au lead SEO.\n\n9h31. Le lead SEO ouvre Search Console. L'onglet Performances montre une baisse progressive des clics depuis le 23 mai. Pas un effondrement brutal — une érosion, jour après jour. Les impressions restent stables sur les premières pages consultées. Le CTR, lui, a chuté de 4.2 % à 2.1 % en moyenne.\n\n9h47. Première hypothèse : une mise à jour d'algorithme Google. Le lead SEO vérifie les trackers habituels — Semrush Sensor, MozCast. Rien de notable fin mai. Deuxième hypothèse : un concurrent qui monte. Vérification sur trois requêtes clés. Les positions sont encore là, entre 3 et 7. Mais les snippets affichés dans la SERP sont… étranges.\n\n10h02. Le lead SEO tape `site:magazine-tech.fr` dans Google. Il parcourt les résultats. La plupart des articles affichent un title de type \"Magazine Tech – Le blog\" au lieu des titres optimisés. Les meta descriptions sont absentes — Google génère ses propres extraits à partir du contenu.\n\n10h08. Il ouvre une page article dans Chrome, View Source. Pas de balise `\u003Cmeta name=\"description\">`. Le `\u003Ctitle>` contient le fallback WordPress par défaut : le nom du site, un tiret, le tagline. Aucune trace des balises Yoast.\n\n10h11. Il se connecte au back-office WordPress. Dans le menu latéral, pas d'entrée \"Yoast SEO\". Le plugin est désactivé. Pas supprimé — désactivé. Les données sont encore en base, les custom fields `_yoast_wpseo_title` et `_yoast_wpseo_metadesc` existent toujours dans `wp_postmeta`. Mais le plugin qui les interprète et les injecte dans le `\u003Chead>` est éteint.\n\n10h14. Le lead SEO remonte le fil. Il ouvre `/wp-admin/plugins.php`. Yoast SEO Premium apparaît avec le statut \"Inactive\". À côté, le plugin de cache objet \"ObjectCache Pro\" est en version 4.0.1. La date de mise à jour : 22 mai.\n\nLa panique commence à monter. 19 jours. 19 jours de meta vides sur 1 200 pages.\n\n## Le bug : un conflit de dépendances PHP qui désactive Yoast en silence\n\nL'enquête commence par les logs. Le fichier `wp-content/debug.log` est configuré, mais le niveau de verbosité n'inclut pas les notices de désactivation de plugin. L'équipe active `WP_DEBUG_LOG` et fouille les logs système.\n\n### Ce que le serveur a enregistré\n\nLe fichier `/var/log/php8.2-fpm/error.log` contient une entrée datée du 22 mai à 3h12 :\n\n```\n[22-May-2026 03:12:47 UTC] PHP Fatal error:  Cannot declare class Composer\\Autoload\\ClassLoader, because the name is already in use in /var/www/html/wp-content/plugins/yoast-seo-premium/vendor_prefixed/composer/ClassLoader.php on line 27\n```\n\nLa cause est un conflit d'autoloader Composer. ObjectCache Pro 4.0 embarque sa propre version de `Composer\\Autoload\\ClassLoader` sans namespace-prefixing. Yoast SEO Premium utilise un vendor prefixed (`YoastSEO_Vendor`), mais certaines classes internes font référence au namespace Composer original en fallback.\n\nAu moment du chargement, WordPress exécute les plugins par ordre alphabétique du dossier. \"object-cache-pro\" se charge avant \"wordpress-seo-premium\". L'autoloader d'ObjectCache Pro déclare `Composer\\Autoload\\ClassLoader`. Quand Yoast tente de déclarer la même classe, PHP lance un fatal error.\n\n### Le mécanisme de désactivation silencieuse\n\nWordPress possède un mécanisme de protection. Quand un plugin provoque un fatal error au chargement, le Recovery Mode entre en jeu — mais uniquement si l'erreur survient pendant une requête HTTP interactive. Pour un cron `wp-cron.php` ou une mise à jour via `wp_maybe_auto_update()`, le comportement est différent.\n\nLe fichier `wp-admin/includes/plugin.php` contient la fonction `deactivate_plugins()`. Lors d'un crash au boot, WordPress attrape le fatal, marque le plugin comme inactif dans l'option `active_plugins`, et continue. Pas d'email envoyé dans ce contexte de mise à jour auto. Le Recovery Mode email ne se déclenche que si l'erreur persiste sur une requête front.\n\nIci, l'erreur n'arrive qu'au boot initial post-update. WordPress désactive Yoast, ObjectCache Pro fonctionne seul, le site sert les pages normalement — sans les meta SEO.\n\n### Ce que voit le navigateur vs ce que voit Googlebot\n\nUn développeur ouvre la page dans Chrome. Le contenu s'affiche. Le titre de l'onglet montre \"Magazine Tech – Le blog\". Ça semble \"normal\" si on ne connaît pas le titre optimisé prévu. Pas de signal visuel d'erreur.\n\nVoici le `\u003Chead>` rendu sans Yoast actif :\n\n```html\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Magazine Tech &#8211; Le blog\u003C/title>\n  \u003Clink rel=\"canonical\" href=\"https://magazine-tech.fr/guide-performances-web-2026/\">\n  \u003Cmeta name=\"robots\" content=\"max-image-preview:large\">\n  \u003C!-- Pas de meta description -->\n  \u003C!-- Pas d'og:title, og:description, og:image -->\n  \u003C!-- Pas de schema Article -->\n  \u003C!-- Pas de twitter:card -->\n\u003C/head>\n```\n\nEt voici ce que le `\u003Chead>` aurait dû contenir avec Yoast actif :\n\n```html\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Guide performances web 2026 : 12 techniques pour un TTFB sous 200ms\u003C/title>\n  \u003Cmeta name=\"description\" content=\"Optimisez le TTFB, le LCP et le CLS de votre site avec ces 12 techniques éprouvées. Benchmarks réels et configs serveur incluses.\">\n  \u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\">\n  \u003Clink rel=\"canonical\" href=\"https://magazine-tech.fr/guide-performances-web-2026/\">\n  \u003Cmeta property=\"og:locale\" content=\"fr_FR\">\n  \u003Cmeta property=\"og:type\" content=\"article\">\n  \u003Cmeta property=\"og:title\" content=\"Guide performances web 2026 : 12 techniques pour un TTFB sous 200ms\">\n  \u003Cmeta property=\"og:description\" content=\"Optimisez le TTFB, le LCP et le CLS de votre site avec ces 12 techniques éprouvées.\">\n  \u003Cmeta property=\"og:url\" content=\"https://magazine-tech.fr/guide-performances-web-2026/\">\n  \u003Cmeta property=\"og:image\" content=\"https://magazine-tech.fr/wp-content/uploads/2026/05/perf-web-cover.jpg\">\n  \u003Cmeta name=\"twitter:card\" content=\"summary_large_image\">\n  \u003Cscript type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"Article\",...}\u003C/script>\n\u003C/head>\n```\n\nLa différence est massive. Google voit un title générique dupliqué sur 1 200 pages. Pas de meta description. Pas de données structurées. Pas d'Open Graph. Le canonical reste correct — WordPress le génère nativement depuis la version 5.0 via `wp_head()` — mais tout le reste disparaît.\n\n### Pourquoi personne n'a rien vu pendant 19 jours\n\nTrois facteurs convergent :\n\n**1. Pas de monitoring des balises meta en production.** L'équipe utilise Screaming Frog pour les audits ponctuels, mais aucun crawl automatisé récurrent ne compare le `\u003Chead>` d'un jour à l'autre. C'est un pattern identique à ce qui se passe sur d'autres CMS et frameworks quand [un composant heading est mal configuré](/blog/design-system-composant-heading-qui-rend-div-selon-la-prop-as-mal-configuree) — le rendu HTML change, mais personne ne le vérifie en continu.\n\n**2. Le site fonctionne visuellement.** Les articles s'affichent, les images chargent, le menu marche. Le plugin de cache objet fait son travail. Aucune page 500. Aucun rapport d'erreur utilisateur.\n\n**3. La baisse de trafic est progressive.** Google ne rétrograde pas instantanément. Il recrawle les pages au fil des jours, découvre les meta vides, et ajuste progressivement les snippets et le CTR. La courbe descend doucement, pas en falaise. Une chute brutale aurait déclenché une alerte Slack via le connecteur GA4. Une érosion de 2 % par jour passe sous le radar.\n\n### Vérification avec Screaming Frog\n\nL'équipe lance un crawl Screaming Frog sur le site complet pour quantifier les dégâts :\n\n```bash\n# Export des titles et meta descriptions via Screaming Frog CLI (mode headless)\nScreamingFrogSEOSpider --crawl https://magazine-tech.fr \\\n  --headless \\\n  --output-folder /tmp/sf-audit \\\n  --export-tabs \"Page Titles:All,Meta Description:All\" \\\n  --max-crawl-depth 5\n```\n\nRésultat : 1 497 pages crawlées. 1 204 pages portent le title \"Magazine Tech – Le blog\". 1 187 pages ont une meta description vide. 293 pages (les pages statiques, la homepage, les pages catégories) conservent des titres corrects — elles utilisent le titre WordPress natif qui reste distinct grâce à la configuration du thème.\n\nL'analyse Search Console confirme : sur les 1 200 articles affectés, le CTR moyen est passé de 4.2 % à 2.1 %. Les impressions n'ont baissé que de 12 % — les pages sont encore positionnées, mais les snippets génériques ne convertissent plus le clic.\n\n## Le fix : réactivation, vérification, et cache-busting\n\n### Étape 1 — Résoudre le conflit d'autoloader\n\nLe fix immédiat consiste à forcer l'ordre de chargement des plugins pour que Yoast se charge avant ObjectCache Pro. WordPress charge les plugins selon l'ordre stocké dans l'option `active_plugins`. La manipulation propre passe par un mu-plugin :\n\n```php\n\u003C?php\n/**\n * Plugin Name: Force Plugin Load Order\n * Description: S'assure que Yoast SEO se charge avant les plugins susceptibles de conflits autoloader.\n * Fichier à placer dans wp-content/mu-plugins/force-plugin-order.php\n */\nadd_filter('pre_update_option_active_plugins', function ($plugins) {\n    $yoast_key = 'wordpress-seo-premium/wp-seo-premium.php';\n    $index = array_search($yoast_key, $plugins, true);\n\n    if ($index !== false && $index > 0) {\n        unset($plugins[$index]);\n        array_unshift($plugins, $yoast_key);\n        $plugins = array_values($plugins);\n    }\n\n    return $plugins;\n});\n```\n\nEnsuite, réactivation de Yoast :\n\n```bash\n# Via WP-CLI en SSH sur le serveur\nwp plugin activate wordpress-seo-premium --path=/var/www/html\n\n# Vérifier que le plugin est actif et sans erreur\nwp plugin status wordpress-seo-premium --path=/var/www/html\n\n# Vider le cache objet pour forcer la regénération des pages\nwp cache flush --path=/var/www/html\n\n# Si un plugin de cache page est actif (WP Rocket, W3TC, etc.)\nwp rocket clean --confirm --path=/var/www/html\n```\n\n### Étape 2 — Vérifier l'intégrité des données Yoast en base\n\nLes custom fields `_yoast_wpseo_title` et `_yoast_wpseo_metadesc` sont stockés dans `wp_postmeta`. La désactivation du plugin ne les supprime pas. Mais il faut vérifier qu'ils sont toujours là :\n\n```sql\n-- Compter les articles avec un title Yoast défini\nSELECT COUNT(*) \nFROM wp_postmeta \nWHERE meta_key = '_yoast_wpseo_title' \nAND meta_value != '';\n\n-- Compter les articles avec une meta desc Yoast définie\nSELECT COUNT(*) \nFROM wp_postmeta \nWHERE meta_key = '_yoast_wpseo_metadesc' \nAND meta_value != '';\n```\n\nRésultat : 1 147 articles ont un title Yoast. 1 089 ont une meta description. Les données sont intactes. La réactivation du plugin les remet immédiatement en service.\n\n### Étape 3 — Forcer le recrawl\n\nAprès réactivation et flush des caches, l'équipe soumet les sitemaps à Google via Search Console et utilise l'API d'indexation pour les 50 pages les plus stratégiques :\n\n```bash\n# Vérifier que le sitemap Yoast est bien regénéré\ncurl -s https://magazine-tech.fr/sitemap_index.xml | head -20\n\n# Inspecter une page corrigée avec un fetch HTTP brut\ncurl -s https://magazine-tech.fr/guide-performances-web-2026/ | grep -E '\u003Ctitle>|\u003Cmeta name=\"description\"'\n```\n\nLe `curl` confirme que les balises Yoast sont de retour.\n\n### Étape 4 — Mettre en place des garde-fous\n\nL'équipe prend trois mesures immédiates :\n\n**Désactiver les mises à jour automatiques pour les plugins critiques.** Dans `wp-config.php` :\n\n```php\n// Désactiver les auto-updates pour les plugins\nadd_filter('auto_update_plugin', '__return_false');\n```\n\nAlternative plus fine : autoriser les mises à jour auto uniquement pour les plugins non critiques, et forcer une validation manuelle pour Yoast, le thème, et les plugins de cache.\n\n**Ajouter un health check custom.** Un mu-plugin qui vérifie à chaque requête admin si Yoast est actif :\n\n```php\nadd_action('admin_notices', function () {\n    if (!is_plugin_active('wordpress-seo-premium/wp-seo-premium.php')) {\n        echo '\u003Cdiv class=\"notice notice-error\">\u003Cp>\u003Cstrong>ALERTE :\u003C/strong> Yoast SEO Premium est désactivé. Les meta SEO ne sont plus injectées.\u003C/p>\u003C/div>';\n    }\n});\n```\n\n**Planifier un crawl Screaming Frog hebdomadaire automatisé** qui compare les titles et meta descriptions avec la semaine précédente.\n\n### Temps de récupération\n\nLe fix est déployé le mardi 10 juin à 14h30. Le recrawl Google des pages les plus visitées prend 3 à 5 jours. Les pages long-tail sont recrawlées en 10 à 14 jours.\n\nLe CTR remonte à 3.6 % après 7 jours, puis retrouve son niveau de 4.1 % après 21 jours. Le trafic organique hebdomadaire revient à 40 500 sessions en 3 semaines — soit 96 % du niveau pré-incident. L'estimation de trafic perdu sur la période de 19 jours : environ 14 000 sessions organiques.\n\nLe pattern rappelle ce qu'on observe sur d'autres stacks quand [les meta sont overridées en silence par un composant enfant](/blog/nuxt-useseometa-le-child-override-silencieusement-les-meta-du-layout-parent) ou quand [une fonction async non-awaited produit des meta vides en streaming](/blog/remix-meta-async-non-awaited-metas-vides-en-streaming). La cause technique diffère, mais le symptôme côté Google est identique : des snippets dégradés, un CTR qui s'effondre, et une équipe qui met trop longtemps à s'en rendre compte.\n\n## Ce qu'on en retient\n\nUn plugin SEO désactivé ne génère aucune erreur 500. Le site fonctionne. Les pages s'affichent. Aucun outil de monitoring classique — ni uptime, ni APM, ni error tracking — ne détecte qu'il manque une balise `\u003Cmeta name=\"description\">` dans le HTML rendu.\n\nLe vrai risque n'est pas le bug. C'est le délai de détection. 19 jours de meta vides, c'est 19 jours pendant lesquels Google recrawle, réévalue, et dégrade les snippets un par un. Un monitoring continu du HTML servi en production, comme ce que propose Seogard, détecte ce type de régression en quelques minutes — pas en trois semaines.\n\nTrois règles à graver : désactiver les mises à jour automatiques sur les plugins SEO-critiques. Monitorer le `\u003Chead>` rendu, pas seulement le statut HTTP. Et tester chaque update dans un environnement de staging avant qu'il touche la production.\n```","https://seogard.io/blog/yoast-seo-desactive-par-un-update-plugin-fallback-meta-vides-sur-80-du-blog","CMS","2026-06-13T16:01:55.662Z","2026-06-13","Un update WordPress désactive Yoast SEO sans alerte. 1 200 articles perdent leurs meta en silence. Récit, diagnostic technique et fix complet.","\u003Ch1>Yoast SEO désactivé par un update plugin : 1 200 articles sans meta pendant 19 jours\u003C/h1>\n\u003Cp>Jeudi 22 mai, 3h12 du matin. Le cron WordPress d'un magazine tech français déclenche les mises à jour automatiques. Parmi elles, un plugin tiers de cache objet passe en version 4.0. Le log indique \"update successful\". Aucune alerte. Aucun email d'erreur. Pourtant, à cet instant précis, Yoast SEO Premium 23.4 vient de se désactiver. 1 200 articles — 80 % du blog — servent désormais des balises \u003Ccode>&#x3C;title>\u003C/code> génériques et des meta descriptions vides. L'équipe ne le découvrira que 19 jours plus tard.\u003C/p>\n\u003Ch2>Mardi 10 juin, 9h14 — \"Pourquoi le trafic organique s'effondre ?\"\u003C/h2>\n\u003Cp>La responsable acquisition ouvre son dashboard Looker Studio. Le trafic organique hebdomadaire est passé de 42 000 sessions à 28 000. Chute de 33 %. Elle vérifie GA4 : pas de problème de tracking, le tag est bien en place. Elle envoie un message au lead SEO.\u003C/p>\n\u003Cp>9h31. Le lead SEO ouvre Search Console. L'onglet Performances montre une baisse progressive des clics depuis le 23 mai. Pas un effondrement brutal — une érosion, jour après jour. Les impressions restent stables sur les premières pages consultées. Le CTR, lui, a chuté de 4.2 % à 2.1 % en moyenne.\u003C/p>\n\u003Cp>9h47. Première hypothèse : une mise à jour d'algorithme Google. Le lead SEO vérifie les trackers habituels — Semrush Sensor, MozCast. Rien de notable fin mai. Deuxième hypothèse : un concurrent qui monte. Vérification sur trois requêtes clés. Les positions sont encore là, entre 3 et 7. Mais les snippets affichés dans la SERP sont… étranges.\u003C/p>\n\u003Cp>10h02. Le lead SEO tape \u003Ccode>site:magazine-tech.fr\u003C/code> dans Google. Il parcourt les résultats. La plupart des articles affichent un title de type \"Magazine Tech – Le blog\" au lieu des titres optimisés. Les meta descriptions sont absentes — Google génère ses propres extraits à partir du contenu.\u003C/p>\n\u003Cp>10h08. Il ouvre une page article dans Chrome, View Source. Pas de balise \u003Ccode>&#x3C;meta name=\"description\">\u003C/code>. Le \u003Ccode>&#x3C;title>\u003C/code> contient le fallback WordPress par défaut : le nom du site, un tiret, le tagline. Aucune trace des balises Yoast.\u003C/p>\n\u003Cp>10h11. Il se connecte au back-office WordPress. Dans le menu latéral, pas d'entrée \"Yoast SEO\". Le plugin est désactivé. Pas supprimé — désactivé. Les données sont encore en base, les custom fields \u003Ccode>_yoast_wpseo_title\u003C/code> et \u003Ccode>_yoast_wpseo_metadesc\u003C/code> existent toujours dans \u003Ccode>wp_postmeta\u003C/code>. Mais le plugin qui les interprète et les injecte dans le \u003Ccode>&#x3C;head>\u003C/code> est éteint.\u003C/p>\n\u003Cp>10h14. Le lead SEO remonte le fil. Il ouvre \u003Ccode>/wp-admin/plugins.php\u003C/code>. Yoast SEO Premium apparaît avec le statut \"Inactive\". À côté, le plugin de cache objet \"ObjectCache Pro\" est en version 4.0.1. La date de mise à jour : 22 mai.\u003C/p>\n\u003Cp>La panique commence à monter. 19 jours. 19 jours de meta vides sur 1 200 pages.\u003C/p>\n\u003Ch2>Le bug : un conflit de dépendances PHP qui désactive Yoast en silence\u003C/h2>\n\u003Cp>L'enquête commence par les logs. Le fichier \u003Ccode>wp-content/debug.log\u003C/code> est configuré, mais le niveau de verbosité n'inclut pas les notices de désactivation de plugin. L'équipe active \u003Ccode>WP_DEBUG_LOG\u003C/code> et fouille les logs système.\u003C/p>\n\u003Ch3>Ce que le serveur a enregistré\u003C/h3>\n\u003Cp>Le fichier \u003Ccode>/var/log/php8.2-fpm/error.log\u003C/code> contient une entrée datée du 22 mai à 3h12 :\u003C/p>\n\u003Cpre>\u003Ccode>[22-May-2026 03:12:47 UTC] PHP Fatal error:  Cannot declare class Composer\\Autoload\\ClassLoader, because the name is already in use in /var/www/html/wp-content/plugins/yoast-seo-premium/vendor_prefixed/composer/ClassLoader.php on line 27\n\u003C/code>\u003C/pre>\n\u003Cp>La cause est un conflit d'autoloader Composer. ObjectCache Pro 4.0 embarque sa propre version de \u003Ccode>Composer\\Autoload\\ClassLoader\u003C/code> sans namespace-prefixing. Yoast SEO Premium utilise un vendor prefixed (\u003Ccode>YoastSEO_Vendor\u003C/code>), mais certaines classes internes font référence au namespace Composer original en fallback.\u003C/p>\n\u003Cp>Au moment du chargement, WordPress exécute les plugins par ordre alphabétique du dossier. \"object-cache-pro\" se charge avant \"wordpress-seo-premium\". L'autoloader d'ObjectCache Pro déclare \u003Ccode>Composer\\Autoload\\ClassLoader\u003C/code>. Quand Yoast tente de déclarer la même classe, PHP lance un fatal error.\u003C/p>\n\u003Ch3>Le mécanisme de désactivation silencieuse\u003C/h3>\n\u003Cp>WordPress possède un mécanisme de protection. Quand un plugin provoque un fatal error au chargement, le Recovery Mode entre en jeu — mais uniquement si l'erreur survient pendant une requête HTTP interactive. Pour un cron \u003Ccode>wp-cron.php\u003C/code> ou une mise à jour via \u003Ccode>wp_maybe_auto_update()\u003C/code>, le comportement est différent.\u003C/p>\n\u003Cp>Le fichier \u003Ccode>wp-admin/includes/plugin.php\u003C/code> contient la fonction \u003Ccode>deactivate_plugins()\u003C/code>. Lors d'un crash au boot, WordPress attrape le fatal, marque le plugin comme inactif dans l'option \u003Ccode>active_plugins\u003C/code>, et continue. Pas d'email envoyé dans ce contexte de mise à jour auto. Le Recovery Mode email ne se déclenche que si l'erreur persiste sur une requête front.\u003C/p>\n\u003Cp>Ici, l'erreur n'arrive qu'au boot initial post-update. WordPress désactive Yoast, ObjectCache Pro fonctionne seul, le site sert les pages normalement — sans les meta SEO.\u003C/p>\n\u003Ch3>Ce que voit le navigateur vs ce que voit Googlebot\u003C/h3>\n\u003Cp>Un développeur ouvre la page dans Chrome. Le contenu s'affiche. Le titre de l'onglet montre \"Magazine Tech – Le blog\". Ça semble \"normal\" si on ne connaît pas le titre optimisé prévu. Pas de signal visuel d'erreur.\u003C/p>\n\u003Cp>Voici le \u003Ccode>&#x3C;head>\u003C/code> rendu sans Yoast actif :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> charset\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"UTF-8\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"viewport\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"width=device-width, initial-scale=1.0\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">title\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Magazine Tech \u003C/span>\u003Cspan style=\"color:#79B8FF\">&#x26;#8211;\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Le blog&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">title\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">link\u003C/span>\u003Cspan style=\"color:#B392F0\"> rel\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"canonical\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> href\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://magazine-tech.fr/guide-performances-web-2026/\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"robots\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"max-image-preview:large\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- Pas de meta description -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- Pas d'og:title, og:description, og:image -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- Pas de schema Article -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- Pas de twitter:card -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Et voici ce que le \u003Ccode>&#x3C;head>\u003C/code> aurait dû contenir avec Yoast actif :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> charset\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"UTF-8\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"viewport\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"width=device-width, initial-scale=1.0\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">title\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Guide performances web 2026 : 12 techniques pour un TTFB sous 200ms&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">title\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"description\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Optimisez le TTFB, le LCP et le CLS de votre site avec ces 12 techniques éprouvées. Benchmarks réels et configs serveur incluses.\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"robots\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">link\u003C/span>\u003Cspan style=\"color:#B392F0\"> rel\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"canonical\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> href\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://magazine-tech.fr/guide-performances-web-2026/\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:locale\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"fr_FR\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:type\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"article\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:title\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Guide performances web 2026 : 12 techniques pour un TTFB sous 200ms\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:description\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Optimisez le TTFB, le LCP et le CLS de votre site avec ces 12 techniques éprouvées.\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:url\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://magazine-tech.fr/guide-performances-web-2026/\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> property\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"og:image\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://magazine-tech.fr/wp-content/uploads/2026/05/perf-web-cover.jpg\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">meta\u003C/span>\u003Cspan style=\"color:#B392F0\"> name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"twitter:card\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> content\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"summary_large_image\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#B392F0\"> type\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"application/ld+json\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>{\"@context\":\"https://schema.org\",\"@type\":\"Article\",...}&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>La différence est massive. Google voit un title générique dupliqué sur 1 200 pages. Pas de meta description. Pas de données structurées. Pas d'Open Graph. Le canonical reste correct — WordPress le génère nativement depuis la version 5.0 via \u003Ccode>wp_head()\u003C/code> — mais tout le reste disparaît.\u003C/p>\n\u003Ch3>Pourquoi personne n'a rien vu pendant 19 jours\u003C/h3>\n\u003Cp>Trois facteurs convergent :\u003C/p>\n\u003Cp>\u003Cstrong>1. Pas de monitoring des balises meta en production.\u003C/strong> L'équipe utilise Screaming Frog pour les audits ponctuels, mais aucun crawl automatisé récurrent ne compare le \u003Ccode>&#x3C;head>\u003C/code> d'un jour à l'autre. C'est un pattern identique à ce qui se passe sur d'autres CMS et frameworks quand \u003Ca href=\"/blog/design-system-composant-heading-qui-rend-div-selon-la-prop-as-mal-configuree\">un composant heading est mal configuré\u003C/a> — le rendu HTML change, mais personne ne le vérifie en continu.\u003C/p>\n\u003Cp>\u003Cstrong>2. Le site fonctionne visuellement.\u003C/strong> Les articles s'affichent, les images chargent, le menu marche. Le plugin de cache objet fait son travail. Aucune page 500. Aucun rapport d'erreur utilisateur.\u003C/p>\n\u003Cp>\u003Cstrong>3. La baisse de trafic est progressive.\u003C/strong> Google ne rétrograde pas instantanément. Il recrawle les pages au fil des jours, découvre les meta vides, et ajuste progressivement les snippets et le CTR. La courbe descend doucement, pas en falaise. Une chute brutale aurait déclenché une alerte Slack via le connecteur GA4. Une érosion de 2 % par jour passe sous le radar.\u003C/p>\n\u003Ch3>Vérification avec Screaming Frog\u003C/h3>\n\u003Cp>L'équipe lance un crawl Screaming Frog sur le site complet pour quantifier les dégâts :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Export des titles et meta descriptions via Screaming Frog CLI (mode headless)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">ScreamingFrogSEOSpider\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --crawl\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> https://magazine-tech.fr\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --headless\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --output-folder\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> /tmp/sf-audit\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --export-tabs\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Page Titles:All,Meta Description:All\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --max-crawl-depth\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 5\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Résultat : 1 497 pages crawlées. 1 204 pages portent le title \"Magazine Tech – Le blog\". 1 187 pages ont une meta description vide. 293 pages (les pages statiques, la homepage, les pages catégories) conservent des titres corrects — elles utilisent le titre WordPress natif qui reste distinct grâce à la configuration du thème.\u003C/p>\n\u003Cp>L'analyse Search Console confirme : sur les 1 200 articles affectés, le CTR moyen est passé de 4.2 % à 2.1 %. Les impressions n'ont baissé que de 12 % — les pages sont encore positionnées, mais les snippets génériques ne convertissent plus le clic.\u003C/p>\n\u003Ch2>Le fix : réactivation, vérification, et cache-busting\u003C/h2>\n\u003Ch3>Étape 1 — Résoudre le conflit d'autoloader\u003C/h3>\n\u003Cp>Le fix immédiat consiste à forcer l'ordre de chargement des plugins pour que Yoast se charge avant ObjectCache Pro. WordPress charge les plugins selon l'ordre stocké dans l'option \u003Ccode>active_plugins\u003C/code>. La manipulation propre passe par un mu-plugin :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">&#x3C;?\u003C/span>\u003Cspan style=\"color:#79B8FF\">php\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">/**\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"> * Plugin Name: Force Plugin Load Order\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"> * Description: S'assure que Yoast SEO se charge avant les plugins susceptibles de conflits autoloader.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"> * Fichier à placer dans wp-content/mu-plugins/force-plugin-order.php\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"> */\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'pre_update_option_active_plugins'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#F97583\">function\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($plugins) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    $yoast_key \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> 'wordpress-seo-premium/wp-seo-premium.php'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    $index \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> array_search\u003C/span>\u003Cspan style=\"color:#E1E4E8\">($yoast_key, $plugins, \u003C/span>\u003Cspan style=\"color:#79B8FF\">true\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($index \u003C/span>\u003Cspan style=\"color:#F97583\">!==\u003C/span>\u003Cspan style=\"color:#79B8FF\"> false\u003C/span>\u003Cspan style=\"color:#F97583\"> &#x26;&#x26;\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> $index \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        unset\u003C/span>\u003Cspan style=\"color:#E1E4E8\">($plugins[$index]);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        array_unshift\u003C/span>\u003Cspan style=\"color:#E1E4E8\">($plugins, $yoast_key);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $plugins \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> array_values\u003C/span>\u003Cspan style=\"color:#E1E4E8\">($plugins);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> $plugins;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">});\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ensuite, réactivation de Yoast :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Via WP-CLI en SSH sur le serveur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">wp\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> plugin\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> activate\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> wordpress-seo-premium\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --path=/var/www/html\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Vérifier que le plugin est actif et sans erreur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">wp\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> plugin\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> status\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> wordpress-seo-premium\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --path=/var/www/html\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Vider le cache objet pour forcer la regénération des pages\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">wp\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> cache\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> flush\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --path=/var/www/html\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Si un plugin de cache page est actif (WP Rocket, W3TC, etc.)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">wp\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> rocket\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> clean\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --confirm\u003C/span>\u003Cspan style=\"color:#79B8FF\"> --path=/var/www/html\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch3>Étape 2 — Vérifier l'intégrité des données Yoast en base\u003C/h3>\n\u003Cp>Les custom fields \u003Ccode>_yoast_wpseo_title\u003C/code> et \u003Ccode>_yoast_wpseo_metadesc\u003C/code> sont stockés dans \u003Ccode>wp_postmeta\u003C/code>. La désactivation du plugin ne les supprime pas. Mais il faut vérifier qu'ils sont toujours là :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">-- Compter les articles avec un title Yoast défini\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">SELECT\u003C/span>\u003Cspan style=\"color:#79B8FF\"> COUNT\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">FROM\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> wp_postmeta \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">WHERE\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> meta_key \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '_yoast_wpseo_title'\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">AND\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> meta_value \u003C/span>\u003Cspan style=\"color:#F97583\">!=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> ''\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">-- Compter les articles avec une meta desc Yoast définie\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">SELECT\u003C/span>\u003Cspan style=\"color:#79B8FF\"> COUNT\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">FROM\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> wp_postmeta \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">WHERE\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> meta_key \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '_yoast_wpseo_metadesc'\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">AND\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> meta_value \u003C/span>\u003Cspan style=\"color:#F97583\">!=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> ''\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Résultat : 1 147 articles ont un title Yoast. 1 089 ont une meta description. Les données sont intactes. La réactivation du plugin les remet immédiatement en service.\u003C/p>\n\u003Ch3>Étape 3 — Forcer le recrawl\u003C/h3>\n\u003Cp>Après réactivation et flush des caches, l'équipe soumet les sitemaps à Google via Search Console et utilise l'API d'indexation pour les 50 pages les plus stratégiques :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Vérifier que le sitemap Yoast est bien regénéré\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> https://magazine-tech.fr/sitemap_index.xml\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#B392F0\"> head\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -20\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Inspecter une page corrigée avec un fetch HTTP brut\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> https://magazine-tech.fr/guide-performances-web-2026/\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#B392F0\"> grep\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -E\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '&#x3C;title>|&#x3C;meta name=\"description\"'\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Le \u003Ccode>curl\u003C/code> confirme que les balises Yoast sont de retour.\u003C/p>\n\u003Ch3>Étape 4 — Mettre en place des garde-fous\u003C/h3>\n\u003Cp>L'équipe prend trois mesures immédiates :\u003C/p>\n\u003Cp>\u003Cstrong>Désactiver les mises à jour automatiques pour les plugins critiques.\u003C/strong> Dans \u003Ccode>wp-config.php\u003C/code> :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// Désactiver les auto-updates pour les plugins\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'auto_update_plugin'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'__return_false'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Alternative plus fine : autoriser les mises à jour auto uniquement pour les plugins non critiques, et forcer une validation manuelle pour Yoast, le thème, et les plugins de cache.\u003C/p>\n\u003Cp>\u003Cstrong>Ajouter un health check custom.\u003C/strong> Un mu-plugin qui vérifie à chaque requête admin si Yoast est actif :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'admin_notices'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#F97583\">function\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> () {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#B392F0\">is_plugin_active\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'wordpress-seo-premium/wp-seo-premium.php'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        echo\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '&#x3C;div class=\"notice notice-error\">&#x3C;p>&#x3C;strong>ALERTE :&#x3C;/strong> Yoast SEO Premium est désactivé. Les meta SEO ne sont plus injectées.&#x3C;/p>&#x3C;/div>'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">});\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>\u003Cstrong>Planifier un crawl Screaming Frog hebdomadaire automatisé\u003C/strong> qui compare les titles et meta descriptions avec la semaine précédente.\u003C/p>\n\u003Ch3>Temps de récupération\u003C/h3>\n\u003Cp>Le fix est déployé le mardi 10 juin à 14h30. Le recrawl Google des pages les plus visitées prend 3 à 5 jours. Les pages long-tail sont recrawlées en 10 à 14 jours.\u003C/p>\n\u003Cp>Le CTR remonte à 3.6 % après 7 jours, puis retrouve son niveau de 4.1 % après 21 jours. Le trafic organique hebdomadaire revient à 40 500 sessions en 3 semaines — soit 96 % du niveau pré-incident. L'estimation de trafic perdu sur la période de 19 jours : environ 14 000 sessions organiques.\u003C/p>\n\u003Cp>Le pattern rappelle ce qu'on observe sur d'autres stacks quand \u003Ca href=\"/blog/nuxt-useseometa-le-child-override-silencieusement-les-meta-du-layout-parent\">les meta sont overridées en silence par un composant enfant\u003C/a> ou quand \u003Ca href=\"/blog/remix-meta-async-non-awaited-metas-vides-en-streaming\">une fonction async non-awaited produit des meta vides en streaming\u003C/a>. La cause technique diffère, mais le symptôme côté Google est identique : des snippets dégradés, un CTR qui s'effondre, et une équipe qui met trop longtemps à s'en rendre compte.\u003C/p>\n\u003Ch2>Ce qu'on en retient\u003C/h2>\n\u003Cp>Un plugin SEO désactivé ne génère aucune erreur 500. Le site fonctionne. Les pages s'affichent. Aucun outil de monitoring classique — ni uptime, ni APM, ni error tracking — ne détecte qu'il manque une balise \u003Ccode>&#x3C;meta name=\"description\">\u003C/code> dans le HTML rendu.\u003C/p>\n\u003Cp>Le vrai risque n'est pas le bug. C'est le délai de détection. 19 jours de meta vides, c'est 19 jours pendant lesquels Google recrawle, réévalue, et dégrade les snippets un par un. Un monitoring continu du HTML servi en production, comme ce que propose Seogard, détecte ce type de régression en quelques minutes — pas en trois semaines.\u003C/p>\n\u003Cp>Trois règles à graver : désactiver les mises à jour automatiques sur les plugins SEO-critiques. Monitorer le \u003Ccode>&#x3C;head>\u003C/code> rendu, pas seulement le statut HTTP. Et tester chaque update dans un environnement de staging avant qu'il touche la production.\u003C/p>\n\u003Cpre>\u003Ccode>\u003C/code>\u003C/pre>",null,12,[18,19,20,21],"wordpress","yoast","plugin","meta","Yoast SEO désactivé par un update : meta vides sur 80% du blog","Sat Jun 13 2026 16:01:55 GMT+0000 (Coordinated Universal Time)",[25,38,53,68,82,97],{"_id":26,"slug":27,"__v":6,"author":7,"canonical":28,"category":10,"createdAt":29,"date":30,"description":31,"image":15,"imageAlt":15,"readingTime":16,"tags":32,"title":36,"updatedAt":37},"6a2ed065aa6b273b0c9328d9","rank-math-update-nouveau-format-de-sitemaps-declenche-une-reindexation-complete","https://seogard.io/blog/rank-math-update-nouveau-format-de-sitemaps-declenche-une-reindexation-complete","2026-06-14T16:01:41.413Z","2026-06-14","Un update Rank Math change le format des sitemaps. Google traite chaque URL comme nouvelle. Récit du pic de crawl, de la chute, et du fix.",[33,34,18,35],"rank math","sitemap","reindexation","Rank Math sitemap : mise à jour qui force une réindexation","Sun Jun 14 2026 16:01:41 GMT+0000 (Coordinated Universal Time)",{"_id":39,"slug":40,"__v":6,"author":7,"canonical":41,"category":42,"createdAt":43,"date":44,"description":45,"image":15,"imageAlt":15,"readingTime":16,"tags":46,"title":51,"updatedAt":52},"6a2f9542aa6b273b0c30f3ec","contentful-le-champ-seo-title-non-sync-vers-next-js-fallback-first-h1-genere","https://seogard.io/blog/contentful-le-champ-seo-title-non-sync-vers-next-js-fallback-first-h1-genere","Headless","2026-06-15T06:01:38.446Z","2026-06-15","Un champ SEO title Contentful non mappé dans Next.js génère un fallback H1 identique sur 1 200 variantes produit. Récit, diagnostic, fix.",[47,48,49,50],"contentful","headless","next.js","mapping","Contentful + Next.js : title manquant, fallback H1 sur 1 200 pages","Mon Jun 15 2026 06:01:38 GMT+0000 (Coordinated Universal Time)",{"_id":54,"slug":55,"__v":6,"author":7,"canonical":56,"category":57,"createdAt":58,"date":44,"description":59,"image":15,"imageAlt":15,"readingTime":16,"tags":60,"title":66,"updatedAt":67},"6a30222eaa6b273b0ca1e7dc","what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe","https://seogard.io/blog/what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe","Actualités SEO","2026-06-15T16:02:54.519Z","Les utilisateurs quotidiens d'AI Overview cliquent 3.5x plus sur les sources. Analyse technique des données et stratégies d'optimisation concrètes.",[61,62,63,64,65],"AI Overview","click data","search behavior","SGE","structured data","AI Overview Click Data : ce que les clics révèlent vraiment","Mon Jun 15 2026 16:02:54 GMT+0000 (Coordinated Universal Time)",{"_id":69,"slug":70,"__v":6,"author":7,"canonical":71,"category":57,"createdAt":72,"date":30,"description":73,"image":15,"imageAlt":15,"readingTime":16,"tags":74,"title":80,"updatedAt":81},"6a2e441caa6b273b0c22bc85","what-apple-s-gemini-powered-siri-means-for-search-visibility-via-sejournal-mattgsouthern","https://seogard.io/blog/what-apple-s-gemini-powered-siri-means-for-search-visibility-via-sejournal-mattgsouthern","2026-06-14T06:03:08.037Z","Apple intègre Gemini dans Siri. Analyse technique des conséquences pour le crawl, le rendering, le structured data et la visibilité organique de vos pages.",[75,76,77,78,79],"siri","gemini","apple-intelligence","llm-seo","search-visibility","Siri + Gemini : impact concret sur la visibilité SEO","Sun Jun 14 2026 06:03:08 GMT+0000 (Coordinated Universal Time)",{"_id":83,"slug":84,"__v":6,"author":7,"canonical":85,"category":86,"createdAt":87,"date":12,"description":88,"image":15,"imageAlt":15,"readingTime":16,"tags":89,"title":95,"updatedAt":96},"6a2cf253aa6b273b0c0c9a5f","tanstack-router-ssr-title-pris-du-layout-au-lieu-de-la-leaf-route","https://seogard.io/blog/tanstack-router-ssr-title-pris-du-layout-au-lieu-de-la-leaf-route","Framework","2026-06-13T06:01:55.020Z","Un e-commerce perd 40 % de clics organiques : TanStack Router applique le title du layout parent au lieu de la leaf route. Récit, diagnostic, fix.",[90,91,92,93,94],"tanstack router","react","ssr","title","meta tags","TanStack Router SSR : le title vient du layout, pas de la page","Sat Jun 13 2026 06:01:55 GMT+0000 (Coordinated Universal Time)",{"_id":98,"slug":99,"__v":6,"author":7,"canonical":100,"category":86,"createdAt":101,"date":102,"description":103,"image":15,"imageAlt":15,"readingTime":104,"tags":105,"title":110,"updatedAt":111},"6a2ba0d0aa6b273b0cf5b507","astro-view-transitions-changement-de-route-ne-re-trigge-pas-le-head-update","https://seogard.io/blog/astro-view-transitions-changement-de-route-ne-re-trigge-pas-le-head-update","2026-06-12T06:01:52.619Z","2026-06-12","Un site Astro perd 40% de clics : les View Transitions ne mettent pas à jour les meta SEO lors des changements de route. Récit, diagnostic et fix.",11,[106,107,108,109],"astro","view transitions","head","spa","Astro View Transitions : meta head figées après navigation","Fri Jun 12 2026 06:01:52 GMT+0000 (Coordinated Universal Time)",{"categories":113},[114,117,121,125,129,131,135,138,141,145,149,152,155,159,162,165,168,171,175],{"category":57,"slug":115,"count":116},"actualites-seo",168,{"category":118,"slug":119,"count":120},"Migration","migration",18,{"category":122,"slug":123,"count":124},"Rendering","rendering",9,{"category":126,"slug":127,"count":128},"Performance","performance",8,{"category":86,"slug":130,"count":128},"framework",{"category":132,"slug":133,"count":134},"Crawl","crawl",7,{"category":136,"slug":137,"count":134},"SEO Technique","seo-technique",{"category":139,"slug":140,"count":134},"Meta Tags","meta-tags",{"category":142,"slug":143,"count":144},"Architecture","architecture",6,{"category":146,"slug":147,"count":148},"JavaScript SEO","javascript-seo",5,{"category":150,"slug":151,"count":148},"Monitoring","monitoring",{"category":153,"slug":154,"count":148},"Structured Data","structured-data",{"category":156,"slug":157,"count":158},"Refonte","refonte",4,{"category":160,"slug":161,"count":158},"Redirections","redirections",{"category":163,"slug":164,"count":158},"Outils","outils",{"category":166,"slug":167,"count":158},"E-commerce","e-commerce",{"category":169,"slug":170,"count":158},"Avancé","avance",{"category":172,"slug":173,"count":174},"Contenu","contenu",3,{"category":176,"slug":177,"count":174},"IA & SEO","ia-seo"]