<?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.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>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>
