<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lyode freelance</title>
    <description>The latest articles on DEV Community by Lyode freelance (@lyodefr).</description>
    <link>https://dev.to/lyodefr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3588168%2F9eb62c96-5107-4880-b4f5-b86a2bafa7ba.png</url>
      <title>DEV Community: Lyode freelance</title>
      <link>https://dev.to/lyodefr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lyodefr"/>
    <language>en</language>
    <item>
      <title>Site WordPress en panne ou piraté, la procédure que je suis pour diagnostiquer</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Sun, 14 Jun 2026 23:04:37 +0000</pubDate>
      <link>https://dev.to/lyodefr/site-wordpress-en-panne-ou-pirate-la-procedure-que-je-suis-pour-diagnostiquer-3epc</link>
      <guid>https://dev.to/lyodefr/site-wordpress-en-panne-ou-pirate-la-procedure-que-je-suis-pour-diagnostiquer-3epc</guid>
      <description>&lt;p&gt;Votre site WordPress ne répond plus. Écran blanc, message d'erreur, ou pire : des liens vers des pharmacies en ligne qui apparaissent dans Google à votre place. La première réaction est de paniquer et de cliquer partout. C'est exactement ce qu'il ne faut pas faire.&lt;/p&gt;

&lt;p&gt;Je suis Sébastien, développeur WordPress freelance à Lyon. J'interviens régulièrement sur des sites cassés ou compromis, et dans 90 % des cas, le problème se règle avec une procédure méthodique. Voici celle que je suis, étape par étape.&lt;/p&gt;

&lt;p&gt;Deux scénarios très différents se cachent derrière "mon site ne marche plus" :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;La panne technique&lt;/strong&gt; : le site affiche une erreur mais personne n'est entré. Souvent une mise à jour, une extension, un fichier corrompu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le piratage&lt;/strong&gt; : quelqu'un a injecté du code, créé des pages, ou pris la main. Là, ce n'est plus du dépannage, c'est de la sécurité.
On va traiter les deux. Mais d'abord, une règle commune.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Avant tout : ne supprimez rien
&lt;/h2&gt;

&lt;p&gt;Le réflexe de tout effacer pour "repartir propre" est la pire idée. Vous détruisez les preuves, et si c'est un piratage, vous risquez de garder la faille tout en perdant les traces qui permettent de la trouver.&lt;/p&gt;

&lt;p&gt;Première action, toujours : &lt;strong&gt;faites une sauvegarde de l'état actuel&lt;/strong&gt;, même cassé. Fichiers et base de données. Via votre hébergeur, FTP, ou en ligne de commande si vous y avez accès :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Sauvegarde de la base de données&lt;/span&gt;
mysqldump &lt;span class="nt"&gt;-u&lt;/span&gt; UTILISATEUR &lt;span class="nt"&gt;-p&lt;/span&gt; NOM_DE_LA_BASE &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; backup-avant-intervention.sql

&lt;span class="c"&gt;# Archive des fichiers&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; backup-fichiers.tar.gz /chemin/vers/votre/site
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Maintenant, on diagnostique.&lt;/p&gt;


&lt;h1&gt;
  
  
  Cas 1 : le site est en panne
&lt;/h1&gt;
&lt;h2&gt;
  
  
  1. Est-ce votre site, ou tout l'hébergement ?
&lt;/h2&gt;

&lt;p&gt;Avant de plonger dans WordPress, éliminez le plus simple. Si c'est l'hébergeur qui est down, vous allez chercher un bug pour rien.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testez un autre site hébergé au même endroit, s'il y en a un.&lt;/li&gt;
&lt;li&gt;Vérifiez la page de statut de votre hébergeur (la plupart en ont une).&lt;/li&gt;
&lt;li&gt;Tapez votre nom de domaine dans un outil comme &lt;code&gt;downforeveryoneorjustme.com&lt;/code&gt; pour voir si c'est vous ou tout le monde.
Si tout l'hébergement est par terre, contactez le support et passez votre tour. Sinon, on continue.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  2. Identifiez le symptôme exact
&lt;/h2&gt;

&lt;p&gt;Le message d'erreur est votre meilleur ami. Notez précisément ce que vous voyez :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptôme&lt;/th&gt;
&lt;th&gt;Piste la plus probable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Écran totalement blanc&lt;/td&gt;
&lt;td&gt;Erreur PHP fatale, conflit d'extension ou mémoire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Erreur 500&lt;/td&gt;
&lt;td&gt;Fichier &lt;code&gt;.htaccess&lt;/code&gt;, PHP, ou extension qui plante&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Erreur de connexion à la base de données"&lt;/td&gt;
&lt;td&gt;Identifiants DB, serveur MySQL, table corrompue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Erreur 403&lt;/td&gt;
&lt;td&gt;Permissions de fichiers ou règle de sécurité&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Site bloqué en "maintenance"&lt;/td&gt;
&lt;td&gt;Fichier &lt;code&gt;.maintenance&lt;/code&gt; laissé après une mise à jour ratée&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ce dernier cas est le plus rapide à régler : connectez-vous en FTP, supprimez le fichier &lt;code&gt;.maintenance&lt;/code&gt; à la racine du site, et c'est réglé.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Activez le mode debug
&lt;/h2&gt;

&lt;p&gt;Par défaut, WordPress masque les erreurs aux visiteurs. Pour voir ce qui se passe réellement, ouvrez le fichier &lt;code&gt;wp-config.php&lt;/code&gt; (à la racine, via FTP) et ajoutez ces lignes &lt;strong&gt;avant&lt;/strong&gt; la ligne &lt;code&gt;/* That's all, stop editing! */&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_DEBUG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_DEBUG_LOG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;     &lt;span class="c1"&gt;// écrit les erreurs dans un fichier&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_DEBUG_DISPLAY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ne les affiche pas aux visiteurs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Rechargez le site. Les erreurs s'écrivent maintenant dans &lt;code&gt;wp-content/debug.log&lt;/code&gt;. Ouvrez-le : la dernière ligne pointe presque toujours vers le fichier ou l'extension fautive.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pensez à remettre &lt;code&gt;WP_DEBUG&lt;/code&gt; sur &lt;code&gt;false&lt;/code&gt; une fois le problème réglé. On ne laisse jamais le debug actif en production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  4. Désactivez les extensions sans accès à l'admin
&lt;/h2&gt;

&lt;p&gt;Si l'admin est inaccessible, vous ne pouvez pas désactiver les extensions depuis le tableau de bord. Passez par le FTP.&lt;/p&gt;

&lt;p&gt;Renommez le dossier complet des extensions :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wp-content/plugins  →  wp-content/plugins-off
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Votre site se recharge sans aucune extension. S'il revient à la vie, c'est une extension le coupable. Renommez le dossier à l'identique (&lt;code&gt;plugins&lt;/code&gt;), puis réactivez les extensions une par une dans l'admin jusqu'à retrouver celle qui casse tout.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Repassez sur un thème par défaut
&lt;/h2&gt;

&lt;p&gt;Même logique pour le thème. Renommez le dossier de votre thème actif dans &lt;code&gt;wp-content/themes/&lt;/code&gt;. WordPress bascule automatiquement sur un thème par défaut (Twenty Twenty-Four ou similaire). Si le site repart, le problème vient de votre thème, souvent du fichier &lt;code&gt;functions.php&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  6. "Erreur de connexion à la base de données"
&lt;/h2&gt;

&lt;p&gt;Ce message a trois causes classiques :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identifiants incorrects&lt;/strong&gt; dans &lt;code&gt;wp-config.php&lt;/code&gt; (&lt;code&gt;DB_NAME&lt;/code&gt;, &lt;code&gt;DB_USER&lt;/code&gt;, &lt;code&gt;DB_PASSWORD&lt;/code&gt;, &lt;code&gt;DB_HOST&lt;/code&gt;). Vérifiez-les auprès de votre hébergeur, surtout après une migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serveur MySQL injoignable&lt;/strong&gt; : trop de connexions, serveur surchargé. Côté hébergeur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Table corrompue.&lt;/strong&gt; WordPress propose un outil de réparation. Ajoutez dans &lt;code&gt;wp-config.php&lt;/code&gt; :
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_ALLOW_REPAIR'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Puis visitez &lt;code&gt;votre-site.fr/wp-admin/maint/repair.php&lt;/code&gt;, lancez la réparation, et &lt;strong&gt;retirez la ligne aussitôt après&lt;/strong&gt; (sinon n'importe qui peut accéder à cet outil).&lt;/p&gt;
&lt;h2&gt;
  
  
  7. La mémoire PHP est saturée
&lt;/h2&gt;

&lt;p&gt;L'écran blanc vient parfois d'une limite mémoire trop basse, surtout sur les sites un peu lourds. Augmentez-la dans &lt;code&gt;wp-config.php&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'WP_MEMORY_LIMIT'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'256M'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Si ça ne suffit pas, le réglage se fait au niveau de l'hébergement (&lt;code&gt;php.ini&lt;/code&gt; ou panneau de l'hébergeur).&lt;/p&gt;


&lt;h1&gt;
  
  
  Cas 2 : le site est piraté
&lt;/h1&gt;

&lt;p&gt;Ici, la logique change. On ne cherche plus à "réparer", on cherche à &lt;strong&gt;nettoyer et sécuriser&lt;/strong&gt;. Et la règle d'or : tant que vous n'avez pas trouvé par où c'est entré, le site se fera repirater.&lt;/p&gt;
&lt;h2&gt;
  
  
  Les signes qui ne trompent pas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Des redirections vers des sites inconnus (pharmacie, casino, contrefaçon).&lt;/li&gt;
&lt;li&gt;Des pages indexées dans Google que vous n'avez jamais créées.&lt;/li&gt;
&lt;li&gt;Google ou votre navigateur affiche un avertissement "site dangereux".&lt;/li&gt;
&lt;li&gt;Des comptes administrateurs que vous ne reconnaissez pas.&lt;/li&gt;
&lt;li&gt;Des fichiers récemment modifiés alors que vous n'avez touché à rien.&lt;/li&gt;
&lt;li&gt;Votre hébergeur vous a envoyé une alerte de sécurité.
## 1. Isolez le site&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mettez le site en mode maintenance (HTTP 503) pour stopper la propagation et éviter que vos visiteurs soient infectés ou redirigés pendant l'intervention. Si l'attaque est grave, demandez à votre hébergeur de couper l'accès public temporairement.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Lancez un scan
&lt;/h2&gt;

&lt;p&gt;Installez un scanner reconnu (depuis l'admin, ou en FTP si l'admin est bloqué) :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wordfence&lt;/strong&gt; : la référence gratuite, scan approfondi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MalCare&lt;/strong&gt; : scan côté serveur, très rapide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sucuri&lt;/strong&gt; : bon pour le scan distant et la blacklist Google.
Le scan vous liste les fichiers modifiés, les fichiers inconnus, et les injections suspectes. C'est votre carte du champ de bataille.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. Traquez les fichiers récemment modifiés
&lt;/h2&gt;

&lt;p&gt;Si vous avez un accès SSH, c'est l'outil le plus efficace. Listez tous les fichiers PHP modifiés ces 7 derniers jours :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*.php"&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="nt"&gt;-ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Et repérez les motifs typiques du code malveillant (code obfusqué, exécution déguisée) :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rEl&lt;/span&gt; &lt;span class="s2"&gt;"eval&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="s2"&gt;|base64_decode&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="s2"&gt;|gzinflate&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="s2"&gt;|str_rot13&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; wp-content/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Ces fonctions ont parfois des usages légitimes, mais combinées et planquées dans &lt;code&gt;wp-content/uploads/&lt;/code&gt;, elles sont presque toujours le signe d'une porte dérobée.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Remplacez le cœur, ne le réparez pas
&lt;/h2&gt;

&lt;p&gt;N'essayez pas de "nettoyer" les fichiers du cœur de WordPress un par un. Remplacez-les en bloc par les versions officielles. Avec WP-CLI :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Vérifie quels fichiers du cœur ont été altérés&lt;/span&gt;
wp core verify-checksums

&lt;span class="c"&gt;# Réinstalle le cœur proprement, sans toucher à vos contenus&lt;/span&gt;
wp core download &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--skip-content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Faites pareil pour vos extensions et thèmes : réinstallez-les depuis les sources officielles plutôt que de tenter de les désinfecter.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Comptes fantômes, clés et mots de passe
&lt;/h2&gt;

&lt;p&gt;Trois actions non négociables :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Supprimez les comptes administrateurs inconnus.&lt;/strong&gt; Vérifiez aussi la table &lt;code&gt;wp_users&lt;/code&gt; directement, certains pirates créent des admins invisibles dans l'interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Régénérez les clés de sécurité (SALT).&lt;/strong&gt; Récupérez un nouveau jeu sur &lt;code&gt;https://api.wordpress.org/secret-key/1.1/salt/&lt;/code&gt; et remplacez le bloc correspondant dans &lt;code&gt;wp-config.php&lt;/code&gt;. Ça déconnecte toutes les sessions actives, y compris celle du pirate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changez tous les mots de passe&lt;/strong&gt; : admin WordPress, base de données, FTP, et compte d'hébergement.
## 6. Nettoyez la base de données&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Le code malveillant ne vit pas que dans les fichiers. Inspectez la table &lt;code&gt;wp_options&lt;/code&gt; (lignes &lt;code&gt;siteurl&lt;/code&gt;, &lt;code&gt;home&lt;/code&gt;, scripts injectés), les articles et pages contenant du JavaScript suspect, et les entrées de spam. Un plugin comme Wordfence repère une partie de ces injections, mais une vérification manuelle reste souvent nécessaire.&lt;/p&gt;
&lt;h2&gt;
  
  
  7. Demandez le réexamen à Google
&lt;/h2&gt;

&lt;p&gt;Si Google a blacklisté votre site, la dernière étape est de demander un réexamen via la &lt;strong&gt;Google Search Console&lt;/strong&gt;, dans la section Sécurité et actions manuelles. À ne faire &lt;strong&gt;qu'après&lt;/strong&gt; un nettoyage complet : si la moindre trace subsiste, Google maintiendra l'avertissement plus longtemps. Le centre de recherche Google propose un guide officiel dédié aux sites piratés, à lire avant la demande.&lt;/p&gt;


&lt;h2&gt;
  
  
  Quand passer la main
&lt;/h2&gt;

&lt;p&gt;Vous pouvez gérer beaucoup de choses seul avec cette procédure. Mais certains signaux indiquent qu'il vaut mieux ne pas insister :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vous avez nettoyé, et le piratage &lt;strong&gt;revient&lt;/strong&gt; quelques jours plus tard. La faille est toujours là.&lt;/li&gt;
&lt;li&gt;Le site est un &lt;strong&gt;e-commerce&lt;/strong&gt; ou traite des données clients (enjeu RGPD, obligation de déclaration à la CNIL en cas de fuite).&lt;/li&gt;
&lt;li&gt;Vous n'avez &lt;strong&gt;pas de sauvegarde propre&lt;/strong&gt; et le nettoyage manuel touche des fichiers que vous ne maîtrisez pas.&lt;/li&gt;
&lt;li&gt;Le site est &lt;strong&gt;blacklisté&lt;/strong&gt; et chaque jour hors ligne vous coûte du chiffre d'affaires.&lt;/li&gt;
&lt;li&gt;Vous n'êtes simplement pas à l'aise avec le FTP, la base de données ou la ligne de commande, et une erreur peut aggraver la situation.
Dans ces cas, un nettoyage approximatif coûte plus cher qu'une intervention propre, parce qu'il laisse une porte ouverte.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'interviens sur ce type de situation, en dépannage ponctuel comme en suivi régulier. Si vous êtes face à un site cassé ou compromis :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site piraté&lt;/strong&gt; : la procédure complète de nettoyage et de sécurisation est détaillée ici 👉 &lt;a href="https://lyode.fr/blog/site-wordpress-pirate/" rel="noopener noreferrer"&gt;Site WordPress piraté : diagnostic, nettoyage et protection&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  - &lt;strong&gt;Pour éviter d'en arriver là&lt;/strong&gt; : un contrat de maintenance (mises à jour, sauvegardes, surveillance) règle 90 % de ces incidents en amont 👉 &lt;a href="https://lyode.fr/expertises/maintenance-wordpress/" rel="noopener noreferrer"&gt;Maintenance WordPress à Lyon&lt;/a&gt;
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Pour aller plus loin
&lt;/h2&gt;

&lt;p&gt;La meilleure procédure de diagnostic reste celle qu'on n'a jamais à utiliser. La plupart des pannes et piratages que je traite auraient été évités par quelques bons réflexes :&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl" class="crayons-story__hidden-navigation-link"&gt;WordPress 7.0 Delayed - What It Means for Your Maintenance Strategy&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/lyodefr" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3588168%2F9eb62c96-5107-4880-b4f5-b86a2bafa7ba.png" alt="lyodefr profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/lyodefr" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Lyode freelance
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Lyode freelance
                
              
              &lt;div id="story-author-preview-content-3442478" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/lyodefr" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3588168%2F9eb62c96-5107-4880-b4f5-b86a2bafa7ba.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Lyode freelance&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl" id="article-link-3442478"&gt;
          WordPress 7.0 Delayed - What It Means for Your Maintenance Strategy
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/news"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;news&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/wordpress"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;wordpress&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/maintenance"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;maintenance&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;



&lt;div class="crayons-card my-2 p-4"&gt;
  &lt;p class="color-base-60"&gt;Post not found or has been removed.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Et vous, quel a été votre pire incident WordPress ? Racontez en commentaire, c'est toujours instructif de comparer les diagnostics.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sébastien, développeur WordPress freelance à Lyon. J'aide les TPE et PME à construire, optimiser et maintenir des sites fiables. &lt;a href="https://lyode.fr/freelance/" rel="noopener noreferrer"&gt;En savoir plus sur lyode.fr&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>security</category>
      <category>php</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Maintenance WordPress : les 7 incidents qui auraient pu être évités</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Wed, 27 May 2026 21:06:44 +0000</pubDate>
      <link>https://dev.to/lyodefr/maintenance-wordpress-les-7-incidents-qui-auraient-pu-etre-evites-3456</link>
      <guid>https://dev.to/lyodefr/maintenance-wordpress-les-7-incidents-qui-auraient-pu-etre-evites-3456</guid>
      <description>&lt;p&gt;Retour d'expérience de freelance WordPress sur les incidents les plus fréquents en clientèle et pourquoi la maintenance n'est jamais un luxe.&lt;/p&gt;

&lt;p&gt;Quand un client appelle en panique parce que son site est en carafe, c'est rarement par hasard. Dans 9 cas sur 10, l'incident aurait pu être détecté plusieurs semaines avant, lors d'une intervention de maintenance bien menée.&lt;/p&gt;

&lt;p&gt;Je m'appelle Sébastien, je suis développeur WordPress freelance à Lyon, et je gère plusieurs contrats de maintenance en parallèle de projets de création de sites. Voici une liste honnête des incidents que j'ai eus à traiter ces derniers mois, et ce qu'une maintenance régulière aurait changé.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. La mise à jour de plugin qui casse l'affichage
&lt;/h2&gt;

&lt;p&gt;Classique. Une extension Elementor passe en version majeure, et tout un layout responsive se retrouve cassé sur mobile. Le client ne s'en rend compte que trois jours plus tard, quand un prospect lui signale.&lt;/p&gt;

&lt;p&gt;Ce qu'une maintenance bien faite change : les mises à jour passent d'abord par un environnement de staging ou, à défaut, par un site cloné. Avant chaque update, une sauvegarde complète (fichiers + base + config serveur). Si quelque chose casse, on rollback en 5 minutes plutôt qu'en 4 heures de debug.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Le plugin abandonné par son auteur
&lt;/h2&gt;

&lt;p&gt;Un plugin populaire en 2022 n'a plus reçu de mise à jour depuis 18 mois. Compatible jusqu'à WordPress 6.3, on est en 6.7. Au prochain update du core, il casse silencieusement une fonctionnalité critique.&lt;/p&gt;

&lt;p&gt;La maintenance permet d'auditer régulièrement les extensions actives : dernière mise à jour, compatibilité annoncée, vulnérabilités CVE connues. Quand un plugin commence à dériver, on cherche un remplaçant maintenu &lt;strong&gt;avant&lt;/strong&gt; qu'il devienne un problème.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. L'attaque brute force sur wp-login.php
&lt;/h2&gt;

&lt;p&gt;Sans monitoring, vous ne le voyez pas. Avec monitoring, vous voyez 4 000 tentatives de connexion en 48h sur un compte admin avec un identifiant deviné depuis l'URL &lt;code&gt;/author/admin/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Quelques basiques qui changent tout :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Désactiver l'énumération des auteurs (&lt;code&gt;?author=1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Renommer ou cacher &lt;code&gt;wp-admin&lt;/code&gt; derrière un slug custom&lt;/li&gt;
&lt;li&gt;Limiter les tentatives de connexion avec un plugin léger&lt;/li&gt;
&lt;li&gt;Mettre en place l'authentification à deux facteurs sur les comptes administrateurs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aucune de ces actions n'est compliquée. Mais aucune ne se fait toute seule.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Le certificat SSL qui expire un dimanche soir
&lt;/h2&gt;

&lt;p&gt;Renouvellement automatique mal configuré chez l'hébergeur, certificat Let's Encrypt qui expire un dimanche, site qui passe en "Connexion non sécurisée" sur Chrome pour tous les visiteurs du lundi matin.&lt;/p&gt;

&lt;p&gt;Un monitoring qui surveille la date d'expiration du certificat et alerte 15 jours avant règle le problème. C'est dix lignes de configuration, et ça évite une journée d'incident à fort impact business.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Le serveur saturé par les images
&lt;/h2&gt;

&lt;p&gt;Quatre ans d'exploitation, jamais de nettoyage. La médiathèque pèse 28 Go. Les images originales en 4000x3000 px sont servies telles quelles. Le score PageSpeed Mobile est passé de 78 à 31 sans que personne ne le remarque.&lt;/p&gt;

&lt;p&gt;La performance ne se dégrade pas d'un coup. C'est une dérive lente, invisible au quotidien, qui finit par impacter le SEO et le taux de conversion. Une maintenance régulière inclut un contrôle des optimisations existantes : cache (WP Rocket, W3 Total Cache), compression d'images (Imagify, ShortPixel), minification HTML/CSS/JS, lazy loading.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. La base de données qui gonfle silencieusement
&lt;/h2&gt;

&lt;p&gt;Révisions de posts non purgées, transients expirés mais jamais nettoyés, tables d'anciens plugins toujours présentes après désinstallation. La base passe de 80 Mo à 1,2 Go en deux ans. Les requêtes ralentissent. Le TTFB grimpe.&lt;/p&gt;

&lt;p&gt;Un nettoyage trimestriel — optimisation des tables, purge des révisions au-delà de N versions, suppression des transients expirés — garde la base saine.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Le rapport qu'on ne fait jamais
&lt;/h2&gt;

&lt;p&gt;Le plus invisible des problèmes, mais celui qui empoisonne la relation client. Si vous facturez de la maintenance et que vous ne livrez aucune trace écrite de ce qui a été fait, le client doute. Il ne sait pas s'il en a pour son argent. Et il a raison de douter.&lt;/p&gt;

&lt;p&gt;Chaque intervention devrait produire un rapport synthétique : mises à jour appliquées (avec versions avant/après), corrections réalisées, anomalies détectées, actions recommandées pour la suite. C'est ce qui transforme la maintenance d'une dépense floue en un service traçable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que j'ai mis en place
&lt;/h2&gt;

&lt;p&gt;Pour mes propres clients, j'ai structuré la maintenance autour de quatre piliers : sécurité et mises à jour maîtrisées, sauvegardes avec plan de reprise, optimisations continues, et reporting détaillé. Je m'appuie sur un outil de monitoring dédié pour suivre la disponibilité, le temps de réponse, le certificat SSL et les alertes techniques entre deux interventions.&lt;/p&gt;

&lt;p&gt;Sur le format, deux options selon le profil du site :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intervention ponctuelle&lt;/strong&gt; (150 €, environ une demi-journée) : pour les sites vitrines ou les projets qui n'ont pas besoin d'un suivi mensuel mais qui doivent rester sains.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contrat mensuel ou trimestriel&lt;/strong&gt; : pour les sites institutionnels ou e-commerce avec plus d'enjeux, plus de plugins, plus d'exposition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si vous êtes basé dans la région lyonnaise et que votre site WordPress tourne sans suivi depuis un moment, le détail de ma prestation est sur &lt;a href="https://lyode.fr/expertises/maintenance-wordpress/" rel="noopener noreferrer"&gt;lyode.fr — Maintenance WordPress&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  En résumé
&lt;/h2&gt;

&lt;p&gt;La maintenance WordPress n'est pas un produit de luxe ni une rente d'agence. C'est juste ce qui fait la différence entre un site qui fonctionne dans cinq ans et un site qui tombe en panne au pire moment. Les sept incidents listés ici ont tous un point commun : ils sont prévisibles, et donc évitables.&lt;/p&gt;

&lt;p&gt;Si vous gérez votre site vous-même, vous avez largement de quoi faire avec cette liste. Si vous préférez le confier à quelqu'un dont c'est le métier, c'est aussi une option raisonnable.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>wordpress</category>
      <category>maintenance</category>
      <category>security</category>
    </item>
    <item>
      <title>WordPress 7.0 Delayed - What It Means for Your Maintenance Strategy</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Wed, 01 Apr 2026 22:48:01 +0000</pubDate>
      <link>https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl</link>
      <guid>https://dev.to/lyodefr/wordpress-70-delayed-what-it-means-for-your-maintenance-strategy-59hl</guid>
      <description>&lt;p&gt;&lt;strong&gt;WordPress 7.0 was supposed to ship on April 9, 2026. That's no longer happening.&lt;/strong&gt;&lt;br&gt;
On March 31, Matias Ventura &lt;a href="https://make.wordpress.org/core/2026/03/31/extending-the-7-0-cycle/" rel="noopener noreferrer"&gt;announced on Make WordPress Core&lt;/a&gt; that the release is being pushed back by several weeks. No new date has been set yet.&lt;br&gt;
This isn't the first delay in the 7.0 cycle - Beta 1 was already postponed in February due to unit test failures, and RC1 was delayed in March over performance concerns. But this time, the delay is architectural, not just a schedule slip.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's causing the delay
&lt;/h2&gt;

&lt;p&gt;The core issue is &lt;strong&gt;Real-Time Collaboration (RTC)&lt;/strong&gt; - a feature that introduces live co-editing in the WordPress block editor, similar to what Google Docs offers.&lt;br&gt;
Building this requires a new database table, changes to how WordPress handles editing sessions, and a rethinking of how post caches work during active collaboration. The team realized that the database schema needed more design work before being locked into a major release.&lt;br&gt;
Key concerns raised by contributors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Performance: **real-time editing currently disables persistent post caches during active sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database design:&lt;/strong&gt; the proposed single RTC table tries to serve both real-time editing (high-frequency, low-latency writes) and synchronization (batch operations) - two fundamentally different workloads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing gaps:&lt;/strong&gt; database schema changes increase the risk of failures during upgrades, and the usual testing path via the Gutenberg plugin was rejected because it could affect production sites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The RTC feature will ship as opt-in, giving hosts and site owners time to evaluate the impact before enabling it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for site maintenance
&lt;/h2&gt;

&lt;p&gt;If you manage WordPress sites - whether it's your own or your clients' - this delay has practical implications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Don't rush the update when it drops&lt;/strong&gt;&lt;br&gt;
When 7.0 finally ships, it will include database migrations. That's a different beast than a typical minor update. Your maintenance checklist should include:&lt;/p&gt;

&lt;p&gt;Full database backup before updating (not just files)&lt;br&gt;
Staging environment test - run the update on a staging copy first&lt;br&gt;
Plugin compatibility check - especially for page builders, caching plugins, and any plugin that hooks into the editor&lt;br&gt;
Monitor post-update - watch for slow queries or unexpected behavior in the editor&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Use this window to get your house in order&lt;/strong&gt;&lt;br&gt;
The delay gives you extra time to prepare. Here's what to tackle now:&lt;/p&gt;

&lt;p&gt;Update to WordPress 6.9.3 if you haven't already - it includes 10 security patches&lt;br&gt;
Audit your plugins - remove anything inactive or unmaintained. Fewer plugins = smoother major upgrades&lt;br&gt;
Check your PHP version - WordPress 7.0 is expected to require PHP 7.4+ at minimum, and PHP 8.1+ is recommended&lt;br&gt;
Review your backup strategy - make sure automated backups include both files AND database, with at least 7 days of retention&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Plan for the RTC feature decision&lt;/strong&gt;&lt;br&gt;
Even though RTC will be opt-in, you'll need to decide whether to enable it for each site you manage. Consider:&lt;/p&gt;

&lt;p&gt;Do your clients actually need real-time co-editing?&lt;br&gt;
Can your hosting handle the additional database writes?&lt;br&gt;
Are your caching layers compatible with the new collaboration mode?&lt;/p&gt;

&lt;p&gt;For most small business sites, the answer is probably "not yet." But for content teams with multiple editors, it could be transformative.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;WordPress powers a massive share of the web. A major version release with database schema changes affects millions of sites simultaneously. The fact that the core team is taking extra time to get the architecture right - rather than shipping on schedule and patching later - is a good sign.&lt;br&gt;
But it also reinforces something I see constantly in my work as a &lt;a href="https://lyode.fr/expertises/maintenance-wordpress/" rel="noopener noreferrer"&gt;WordPress freelancer in Lyon&lt;/a&gt;: maintenance isn't optional, it's infrastructure. Every major WordPress release is a moment where the gap between "sites that are actively maintained" and "sites that are left on autopilot" becomes painfully visible.&lt;br&gt;
Sites with a proper maintenance workflow - regular backups, staging environments, plugin audits, monitoring - will handle the 7.0 transition smoothly. Sites without one will scramble.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do right now
&lt;/h2&gt;

&lt;p&gt;Don't install WordPress 7.0 RC builds on production sites - they're for testing only&lt;br&gt;
Set up a staging environment if you don't have one (most hosts offer one-click staging)&lt;br&gt;
Run a full backup and verify you can restore from it&lt;br&gt;
Subscribe to Make WordPress Core for the updated release timeline&lt;br&gt;
Audit your plugin list - anything that hasn't been updated in 12+ months is a risk factor for 7.0 compatibility&lt;/p&gt;

&lt;p&gt;The new release date hasn't been announced yet, but it's expected to be "a few weeks" after the original April 9 target. I'll update this post when the timeline is confirmed.&lt;/p&gt;

&lt;p&gt;I'm Sébastien, a WordPress developer and SEO specialist based in Lyon, France. I help businesses build, optimize, and maintain their WordPress sites. If you're looking for help preparing for WordPress 7.0 or need ongoing maintenance support, you can &lt;a href="https://lyode.fr/expertises/maintenance-wordpress/" rel="noopener noreferrer"&gt;find out more about my services here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>wordpress</category>
      <category>maintenance</category>
      <category>news</category>
    </item>
    <item>
      <title>Web Project Acceptance Testing: A Practical Guide (with Checklist)</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Tue, 10 Mar 2026 12:22:46 +0000</pubDate>
      <link>https://dev.to/lyodefr/web-project-acceptance-testing-a-practical-guide-with-checklist-47ic</link>
      <guid>https://dev.to/lyodefr/web-project-acceptance-testing-a-practical-guide-with-checklist-47ic</guid>
      <description>&lt;p&gt;Ever launched a website only to discover a broken form, a missing redirect, or a page that looks terrible on mobile — after going live? That's what proper acceptance testing is designed to prevent.&lt;/p&gt;

&lt;p&gt;What is Web Acceptance Testing?&lt;br&gt;
Web acceptance testing (called recettage in French project management) is the structured process of validating a website or web application before it goes live. It ensures the final deliverable matches the initial specifications — functionally, technically, and from a user experience standpoint.&lt;br&gt;
It's not just "clicking around to see if things work." It's a documented, step-by-step validation that covers every layer of your project.&lt;/p&gt;

&lt;p&gt;The 3 Phases You Shouldn't Skip&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Intermediate testing (during development)
Run at the end of each sprint or functional phase. Validates features progressively and avoids the "big bang" effect at delivery.&lt;/li&gt;
&lt;li&gt;User Acceptance Testing (UAT)
Performed by the client or end users. The goal: confirm the product actually meets real business needs — not just technical specs.&lt;/li&gt;
&lt;li&gt;Final pre-production testing
The last checkpoint before go-live. Everything gets tested one final time: responsiveness, SEO, RGPD compliance, redirects, performance. This phase ends with a sign-off document authorizing production deployment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step-by-Step Method&lt;br&gt;
Step 1 — Write your acceptance test plan&lt;br&gt;
Document every feature to test, the expected result, and the validation criteria. Derive it directly from your specifications or backlog.&lt;br&gt;
Step 2 — Build your test scenarios&lt;br&gt;
Each scenario simulates a real user action:&lt;/p&gt;

&lt;p&gt;Submit a contact form → verify email received&lt;br&gt;
Add product to cart → complete checkout&lt;br&gt;
Navigate on mobile → check layout and readability&lt;/p&gt;

&lt;p&gt;Always include edge cases: empty fields, unauthorized actions, unusual screen sizes.&lt;br&gt;
Step 3 — Run the tests&lt;br&gt;
Each test gets one of three statuses:&lt;/p&gt;

&lt;p&gt;✅ Passed&lt;br&gt;
⚠️ Minor issue&lt;br&gt;
❌ Blocking bug&lt;/p&gt;

&lt;p&gt;Use a simple tool (Notion, Trello, or even a spreadsheet) to track results.&lt;br&gt;
Step 4 — Track and fix anomalies&lt;br&gt;
Every bug must be documented (screenshot + steps to reproduce), prioritized, assigned, fixed, and retested. Don't skip the retest — fixes sometimes introduce new issues.&lt;br&gt;
Step 5 — Technical &amp;amp; SEO verification&lt;br&gt;
This is where many teams cut corners. Before signing off, verify:&lt;/p&gt;

&lt;p&gt;Page load speed (PageSpeed Insights)&lt;br&gt;
Every page returns HTTP 200 (no silent errors)&lt;br&gt;
No broken links or missing redirects&lt;br&gt;
JavaScript console is clean&lt;br&gt;
robots.txt and sitemap are correct&lt;/p&gt;

&lt;p&gt;The Acceptance Testing Checklist&lt;br&gt;
FUNCTIONAL&lt;br&gt;
☐ All forms submit correctly and trigger expected emails&lt;br&gt;
☐ Navigation links point to correct pages&lt;br&gt;
☐ Dynamic content loads properly (sliders, filters, search)&lt;/p&gt;

&lt;p&gt;RESPONSIVE&lt;br&gt;
☐ Mobile layout is clean and usable&lt;br&gt;
☐ Touch targets are large enough&lt;br&gt;
☐ No content overflow on small screens&lt;/p&gt;

&lt;p&gt;TECHNICAL&lt;br&gt;
☐ All pages return HTTP 200&lt;br&gt;
☐ No 404 errors on internal links&lt;br&gt;
☐ 301 redirects are active (after a redesign)&lt;br&gt;
☐ Page speed score is acceptable (Core Web Vitals)&lt;br&gt;
☐ No JS errors in browser console&lt;/p&gt;

&lt;p&gt;SECURITY&lt;br&gt;
☐ SSL certificate is valid on all pages&lt;br&gt;
☐ Admin access is protected&lt;br&gt;
☐ Forms are protected against XSS and SQL injection&lt;/p&gt;

&lt;p&gt;LEGAL &amp;amp; COMPLIANCE&lt;br&gt;
☐ Cookie consent banner is present&lt;br&gt;
☐ Privacy policy is linked in forms&lt;br&gt;
☐ GDPR data handling is documented&lt;/p&gt;

&lt;p&gt;SIGN-OFF&lt;br&gt;
☐ All blocking bugs resolved&lt;br&gt;
☐ Client/stakeholder approval obtained&lt;br&gt;
☐ PV de recette (acceptance report) signed&lt;/p&gt;

&lt;p&gt;Common Mistakes to Avoid&lt;/p&gt;

&lt;p&gt;Testing only in your local environment, not on a staging server&lt;br&gt;
Skipping mobile testing entirely&lt;br&gt;
Not involving the actual end user in UAT&lt;br&gt;
Forgetting to document anomalies (memory is not a bug tracker)&lt;br&gt;
Treating acceptance testing as a one-time event rather than an iterative process&lt;/p&gt;

&lt;p&gt;Going Deeper&lt;br&gt;
If you work in French or with French-speaking clients, I wrote a comprehensive guide on recettage web covering all these phases in detail, including tools and real-world examples: &lt;a href="https://lyode.fr/blog/recettage-projets-web/" rel="noopener noreferrer"&gt;Recettage : définition, étapes et bonnes pratiques&lt;/a&gt;&lt;br&gt;
If you need help running acceptance testing on your WordPress project or want a freelance partner for the full delivery process, you can also check out my &lt;a href="https://lyode.fr/freelance/" rel="noopener noreferrer"&gt;freelance services at Lyode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What's your go-to tool for tracking bugs during acceptance testing? Drop it in the comments.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>testing</category>
      <category>wordpress</category>
      <category>website</category>
    </item>
    <item>
      <title>Cleaning a 4,000-image WordPress Media Library without breaking SEO</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Thu, 29 Jan 2026 12:41:07 +0000</pubDate>
      <link>https://dev.to/lyodefr/cleaning-a-4000-image-wordpress-media-library-without-breaking-seo-2g1p</link>
      <guid>https://dev.to/lyodefr/cleaning-a-4000-image-wordpress-media-library-without-breaking-seo-2g1p</guid>
      <description>&lt;h1&gt;
  
  
  Cleaning a 4,000-image WordPress Media Library without breaking SEO
&lt;/h1&gt;

&lt;p&gt;On most WordPress sites, the media library is the dirtiest part of the stack.&lt;/p&gt;

&lt;p&gt;Not the theme.&lt;br&gt;&lt;br&gt;
Not the plugins.&lt;br&gt;&lt;br&gt;
Not even performance.&lt;/p&gt;

&lt;p&gt;The media library.&lt;/p&gt;

&lt;p&gt;Recently, I had to clean a WordPress site with &lt;strong&gt;nearly 4,000 images&lt;/strong&gt; accumulated over several years. Multiple contributors, no rules, no real process.&lt;/p&gt;

&lt;p&gt;The challenge wasn’t “optimizing images”.&lt;br&gt;&lt;br&gt;
It was &lt;strong&gt;cleaning everything without breaking SEO or existing content&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article explains what actually goes wrong, what you should &lt;em&gt;never&lt;/em&gt; do, and a safe strategy to clean a large WordPress media library.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why WordPress media libraries rot over time
&lt;/h2&gt;

&lt;p&gt;Media libraries don’t become messy because people are careless.&lt;br&gt;&lt;br&gt;
They rot because WordPress makes it very easy to upload files — and very hard to enforce rules.&lt;/p&gt;

&lt;p&gt;Over time, you usually end up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images named &lt;code&gt;IMG_4839.jpg&lt;/code&gt;, &lt;code&gt;final-banner-ok-v3.png&lt;/code&gt;, &lt;code&gt;screenshot_2021_12_edited.jpg&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Missing or useless ALT attributes&lt;/li&gt;
&lt;li&gt;Images uploaded at 4000px wide for a 1200px layout&lt;/li&gt;
&lt;li&gt;Useful formats blocked by default (SVG, WEBM, ZIP…)&lt;/li&gt;
&lt;li&gt;No consistency between old and new content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add editors, clients, interns, agencies… and the mess compounds.&lt;/p&gt;

&lt;p&gt;The worst part?&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Most people are afraid to touch the media library&lt;/strong&gt;, because they fear breaking pages or SEO.&lt;/p&gt;

&lt;p&gt;That fear is justified.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you should NOT do
&lt;/h2&gt;

&lt;p&gt;Before talking about solutions, let’s be clear about the mistakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ Manually renaming files
&lt;/h3&gt;

&lt;p&gt;Renaming media files directly (FTP or media replacement) can break:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;internal references&lt;/li&gt;
&lt;li&gt;external links&lt;/li&gt;
&lt;li&gt;cached URLs&lt;/li&gt;
&lt;li&gt;social previews&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Re-uploading images “cleanly”
&lt;/h3&gt;

&lt;p&gt;Re-uploading means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;losing existing URLs&lt;/li&gt;
&lt;li&gt;losing Google Image history&lt;/li&gt;
&lt;li&gt;risking broken layouts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Aggressive compression plugins
&lt;/h3&gt;

&lt;p&gt;Compression is not cleaning.&lt;/p&gt;

&lt;p&gt;Compression plugins can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;degrade image quality&lt;/li&gt;
&lt;li&gt;change file hashes&lt;/li&gt;
&lt;li&gt;trigger layout shifts&lt;/li&gt;
&lt;li&gt;hide structural issues instead of fixing them&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Blind AI-generated ALT text
&lt;/h3&gt;

&lt;p&gt;Automatically generating descriptive ALT text without context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creates irrelevant descriptions&lt;/li&gt;
&lt;li&gt;introduces semantic noise&lt;/li&gt;
&lt;li&gt;can hurt accessibility and SEO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automation is fine.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Guessing is not.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The safe cleanup strategy
&lt;/h2&gt;

&lt;p&gt;When dealing with thousands of images, the goal is &lt;strong&gt;normalization&lt;/strong&gt;, not magic.&lt;/p&gt;

&lt;p&gt;Here’s a strategy that works reliably.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Normalize filenames (without breaking URLs)
&lt;/h3&gt;

&lt;p&gt;You don’t need poetic filenames.&lt;br&gt;&lt;br&gt;
You need &lt;strong&gt;clean, readable, predictable ones&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove useless characters (&lt;code&gt;_&lt;/code&gt;, random hashes, duplicated words)&lt;/li&gt;
&lt;li&gt;Keep meaningful words when possible&lt;/li&gt;
&lt;li&gt;Apply the same rules everywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Done properly, this improves long-term maintainability &lt;strong&gt;without breaking references&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Generate clean, neutral ALT attributes
&lt;/h3&gt;

&lt;p&gt;ALT text is not a keyword playground.&lt;/p&gt;

&lt;p&gt;For large libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Neutral, descriptive ALT is safer than “creative” ALT&lt;/li&gt;
&lt;li&gt;Consistency is more important than cleverness&lt;/li&gt;
&lt;li&gt;Missing ALT is worse than simple ALT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is accessibility first, SEO second.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Resize images (not compress them)
&lt;/h3&gt;

&lt;p&gt;Most WordPress images are simply &lt;strong&gt;too large&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Resizing means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keeping visual quality&lt;/li&gt;
&lt;li&gt;reducing unnecessary pixels&lt;/li&gt;
&lt;li&gt;matching real display needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On large sites, resizing alone can save &lt;strong&gt;hundreds of megabytes&lt;/strong&gt;, without touching compression.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Control allowed formats properly
&lt;/h3&gt;

&lt;p&gt;WordPress blocks many useful formats by default.&lt;/p&gt;

&lt;p&gt;Instead of hacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explicitly allow required formats&lt;/li&gt;
&lt;li&gt;apply proper security rules&lt;/li&gt;
&lt;li&gt;keep control at upload level&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This avoids unsafe plugins and manual workarounds.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real case: cleaning a 4,000-image media library
&lt;/h2&gt;

&lt;p&gt;On this project, the site contained &lt;strong&gt;3,949 images&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After cleanup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;79 missing ALT attributes&lt;/strong&gt; were generated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1,150 filenames&lt;/strong&gt; were normalized&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;80 oversized images&lt;/strong&gt; were resized&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~370 MB&lt;/strong&gt; of disk space was saved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No broken pages.&lt;br&gt;&lt;br&gt;
No URL changes.&lt;br&gt;&lt;br&gt;
No SEO loss.&lt;/p&gt;




&lt;h2&gt;
  
  
  The tool I used (and why I built it)
&lt;/h2&gt;

&lt;p&gt;To automate this safely, I built a small WordPress plugin called &lt;strong&gt;Filikod&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Important clarifications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No AI&lt;/li&gt;
&lt;li&gt;No destructive compression&lt;/li&gt;
&lt;li&gt;No guessing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Filikod focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;predictable automation&lt;/li&gt;
&lt;li&gt;structural cleanup&lt;/li&gt;
&lt;li&gt;long-term consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find it here on WordPress.org:&lt;br&gt;&lt;br&gt;
&lt;a href="https://wordpress.org/plugins/filikod/" rel="noopener noreferrer"&gt;https://wordpress.org/plugins/filikod/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the project website:&lt;br&gt;&lt;br&gt;
&lt;a href="https://filikod.com" rel="noopener noreferrer"&gt;https://filikod.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(No hard sell. Just context.)&lt;/p&gt;




&lt;h2&gt;
  
  
  When automation makes sense (and when it doesn’t)
&lt;/h2&gt;

&lt;p&gt;Automation makes sense when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the site has hundreds or thousands of images&lt;/li&gt;
&lt;li&gt;multiple people upload content&lt;/li&gt;
&lt;li&gt;consistency matters over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automation is not always necessary for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;very small sites&lt;/li&gt;
&lt;li&gt;single-author blogs&lt;/li&gt;
&lt;li&gt;temporary projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key is &lt;strong&gt;control&lt;/strong&gt;, not speed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;A messy media library is not a minor issue.&lt;br&gt;&lt;br&gt;
It’s a structural problem that affects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;accessibility&lt;/li&gt;
&lt;li&gt;SEO&lt;/li&gt;
&lt;li&gt;long-term maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution isn’t magic plugins or AI promises.&lt;/p&gt;

&lt;p&gt;It’s &lt;strong&gt;boring, predictable cleanup&lt;/strong&gt;, done safely.&lt;/p&gt;

&lt;p&gt;Tools should clean.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Not guess.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tutorial</category>
      <category>wordpress</category>
      <category>wordpressplugin</category>
    </item>
    <item>
      <title>Filikod : le plugin WP qui prend soin de vos images</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Thu, 11 Dec 2025 21:23:36 +0000</pubDate>
      <link>https://dev.to/lyodefr/filikod-le-plugin-wp-qui-prend-soin-de-vos-images-4gdk</link>
      <guid>https://dev.to/lyodefr/filikod-le-plugin-wp-qui-prend-soin-de-vos-images-4gdk</guid>
      <description>&lt;p&gt;Gérer les médias d’un site WordPress n’est jamais anodin.&lt;br&gt;
Images trop lourdes, ALT text oubliés, formats refusés… ces petits détails s’accumulent et finissent par impacter les performances, l’accessibilité et le SEO.&lt;/p&gt;

&lt;p&gt;Pour aider les utilisateurs à simplifier cette gestion, nous avons créé Filikod, un plugin gratuit dédié à la qualité des images.&lt;br&gt;
&lt;a href="https://filikod.com" rel="noopener noreferrer"&gt;https://filikod.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu’est-ce qu’un ALT text et pourquoi est-il important ?
&lt;/h2&gt;

&lt;p&gt;L’ALT text est une description d’image utilisée :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;par Google pour comprendre le contenu visuel,&lt;/li&gt;
&lt;li&gt;par les lecteurs d’écran pour l’accessibilité,&lt;/li&gt;
&lt;li&gt;par les navigateurs si l’image ne peut pas s’afficher.&lt;/li&gt;
&lt;li&gt;Un ALT text manquant ou mal renseigné affaiblit le SEO et crée un obstacle pour les utilisateurs en situation de handicap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avec Filikod&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le plugin génère automatiquement un ALT text propre lors de l’upload,&lt;br&gt;
et propose un outil permettant de corriger l’intégralité des images déjà présentes dans la médiathèque.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pourquoi vos images doivent-elles être redimensionnées ?
&lt;/h2&gt;

&lt;p&gt;Une image trop large ralentit le chargement de vos pages et alourdit votre espace de stockage.&lt;br&gt;
La plupart des images envoyées sur WordPress dépassent la largeur réellement nécessaire pour l’affichage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avec Filikod&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le plugin peut :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;redimensionner automatiquement les nouvelles images,&lt;/li&gt;
&lt;li&gt;ajuster les images existantes via un traitement global.
Il conserve la qualité, réduit le poids et applique une taille cohérente pour tout le site.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quels formats supplémentaires peut-on activer ?
&lt;/h2&gt;

&lt;p&gt;WordPress n’autorise pas certains fichiers utiles au quotidien :&lt;br&gt;
PSD, AI, ICO, ZIP, WEBM…&lt;br&gt;
**&lt;br&gt;
Avec Filikod**&lt;/p&gt;

&lt;p&gt;Vous pouvez activer ou désactiver ces formats directement depuis le tableau de bord, sans manipulations complexes.&lt;/p&gt;

&lt;p&gt;Le contrôle est simple, visuel, et adapté aux besoins de chaque site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment installer Filikod ?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Aller sur WordPress.org : &lt;a href="https://wordpress.org/plugins/filikod" rel="noopener noreferrer"&gt;https://wordpress.org/plugins/filikod&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Installer le plugin&lt;/li&gt;
&lt;li&gt;Activer&lt;/li&gt;
&lt;li&gt;Laisser Filikod travailler en arrière-plan&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>wordpress</category>
      <category>pluginwordpress</category>
      <category>programming</category>
      <category>news</category>
    </item>
    <item>
      <title>5 bonnes pratiques pour améliorer la performance de votre site WordPress</title>
      <dc:creator>Lyode freelance</dc:creator>
      <pubDate>Wed, 29 Oct 2025 20:20:22 +0000</pubDate>
      <link>https://dev.to/lyodefr/5-bonnes-pratiques-pour-ameliorer-la-performance-de-votre-site-wordpress-72m</link>
      <guid>https://dev.to/lyodefr/5-bonnes-pratiques-pour-ameliorer-la-performance-de-votre-site-wordpress-72m</guid>
      <description>&lt;p&gt;La performance d’un site WordPress n’est pas qu’une question de rapidité : c’est aussi un facteur essentiel pour le référencement naturel (SEO) et l’expérience utilisateur.&lt;br&gt;&lt;br&gt;
En tant que développeur WordPress freelance à Lyon, j’optimise chaque projet pour obtenir un site à la fois fluide, léger et durable.&lt;/p&gt;

&lt;p&gt;Voici 5 bonnes pratiques simples à mettre en place 👇&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ 1. Allégez vos plugins
&lt;/h3&gt;

&lt;p&gt;Chaque plugin ajoute du code, parfois inutile. Avant d’en installer un nouveau, demandez-vous s’il est vraiment indispensable.&lt;br&gt;&lt;br&gt;
Supprimez les extensions inactives et privilégiez les solutions légères (ou un petit bout de code sur mesure).&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 2. Optimisez vos images
&lt;/h3&gt;

&lt;p&gt;Les images sont souvent les fichiers les plus lourds. Utilisez le format &lt;strong&gt;WebP&lt;/strong&gt; quand c’est possible, activez la &lt;strong&gt;compression&lt;/strong&gt; et le &lt;strong&gt;lazy loading&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Des outils comme TinyPNG ou des plugins spécialisés comme &lt;strong&gt;filikod&lt;/strong&gt; ou &lt;strong&gt;imagify&lt;/strong&gt; peuvent vous aider.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔒 3. Activez la mise en cache
&lt;/h3&gt;

&lt;p&gt;Une extension comme &lt;strong&gt;WP Rocket&lt;/strong&gt; ou &lt;strong&gt;LiteSpeed Cache&lt;/strong&gt; permet de stocker des versions statiques de vos pages pour accélérer le chargement.&lt;br&gt;&lt;br&gt;
C’est souvent la première amélioration visible pour l’utilisateur.&lt;/p&gt;




&lt;h3&gt;
  
  
  📡 4. Surveillez vos Core Web Vitals
&lt;/h3&gt;

&lt;p&gt;Les métriques comme &lt;strong&gt;LCP&lt;/strong&gt;, &lt;strong&gt;FID&lt;/strong&gt; et &lt;strong&gt;CLS&lt;/strong&gt; sont mesurées par Google et influencent votre positionnement.&lt;br&gt;&lt;br&gt;
Testez régulièrement votre site sur &lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;PageSpeed Insights&lt;/a&gt; pour détecter les points d’amélioration.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧰 5. Tenez votre site à jour
&lt;/h3&gt;

&lt;p&gt;WordPress, les thèmes et les plugins doivent être mis à jour pour garantir la stabilité et la sécurité.&lt;br&gt;&lt;br&gt;
Une maintenance régulière évite les lenteurs et les vulnérabilités.&lt;/p&gt;




&lt;p&gt;💡 Ces optimisations sont cumulatives : appliquées ensemble, elles améliorent le score Lighthouse et la satisfaction des visiteurs.&lt;/p&gt;




&lt;p&gt;📍 Je partage régulièrement des tutoriels WordPress et des conseils sur la performance, la sécurité et le SEO.&lt;br&gt;&lt;br&gt;
👉 Découvrez mon plugin et mes conseils sur &lt;a href="https://lyode.fr" rel="noopener noreferrer"&gt;Lyode.fr – création et optimisation de sites WordPress&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>freelanceweb</category>
      <category>webdev</category>
      <category>website</category>
    </item>
  </channel>
</rss>
