WPFormationWordPress, rien que du WordPress
Formation WordPress + IA
IA & Claude Code · Qualiopi · OPCO
Je me forme
Recette site web : 4 à 5 vérifications avant l'ouverture, 13 textes sous le seuil de contraste, 18 adresses contrôlées
Tutoriels WordPress

Recette avant mise en ligne d’un site WordPress : la méthode, les tests, la décision

Par Fabrice Ducarme··28 min de lecture
Résumé de l'article

La recette d’un site web vérifie, point par point, que le site livré respecte le cahier des charges, avant de décider de sa mise en ligne. Sur WordPress, elle se joue sur quelques contrôles précis : indexation autorisée, e-mails réellement reçus, tâches planifiées, sauvegarde restaurée. Chaque anomalie se classe par son effet sur la décision : bloquante, réserve, ou correction ultérieure.

Pas le temps ? Faites-le analyser par l'IA

Vous me lisez souvent ? Dites-le à Google

J'ajoute WPFormation à mes sources

Votre site WordPress est "presque prêt", et quelqu’un vient de prononcer le mot recette ? Tapez "recette site web" dans Google : fin septembre 2026, Marmiton figurait parmi les vingt premiers résultats, au milieu des agences web… Le mot fait sourire. L’étape, elle, décide si votre site peut ouvrir.

Je dis bien décide. Une recette reprend le cahier des charges point par point, puis tranche : on ouvre, ou on n’ouvre pas.

Voici comment je la mène, et ce que WordPress vous fera oublier si vous n’y prenez pas garde. Vous trouverez aussi les commandes que j’ai fait exécuter pour le vérifier, et mon modèle de cahier de recette, à télécharger en Word et en PDF.

Schéma des étapes d'une recette site web : contrôles internes, recette avec le client, décision, bascule et suivi
La recette ne s’arrête pas à la décision : la bascule et la semaine qui suit en font partie.

Qu’est-ce que la recette d’un site web ?

La recette d’un site web est la phase où le client et le prestataire vérifient ensemble que le site livré correspond à ce qui a été commandé, avant sa mise en ligne. On contrôle chaque promesse du cahier des charges, on note chaque écart. La recette se termine par une décision : accepté, accepté avec réserves, ou refusé.

Recette site web, recettage, UAT : trois mots, une seule étape

Recette, recettage : les deux mots désignent la même étape. En anglais, vous lirez UAT, pour user acceptance testing, le test d’acceptation par l’utilisateur. L’idée est dans le nom : celui qui accepte est celui qui va se servir du site.

Le cahier de recette est le document qui porte tout cela. Mon modèle, en Word et en PDF, se télécharge dans ce guide.

Pourquoi une check-list ne suffit pas

Une check-list dit quoi regarder. Elle ne dit pas qui décide, par rapport à quel document, ni ce qu’on fait d’un point qui ne passe pas.

La recette, si. Sa référence est le cahier des charges : le site est conforme, ou non, à ce qui était écrit. Dans mon modèle de cahier des charges de site web, la rubrique 12 s’appelle "Recette et critères de validation". Elle tient en quelques lignes à remplir.

  • "Liste des points à vérifier avant mise en ligne" ;
  • "Qui valide, côté client" ;
  • "Délai de recette accordé après livraison" ;
  • "Modalités de correction des éventuels défauts".

La recette est le jour où ces quatre lignes servent. Restées vides à la signature, elles se rempliront dans l’urgence, chacun à son avantage… Je ne réexplique pas ici le cahier des charges : ce guide commence là où il s’arrête, et transforme ses promesses en tests.

Qui fait la recette, quand, et combien de temps ?

La recette commence chez le prestataire, qui contrôle son propre travail. Puis le client valide, avec lui, que le site respecte le cahier des charges. Côté calendrier, gardez au moins deux jours ouvrés avant la date d’ouverture. C’est le minimum que donne la documentation de WordPress VIP, un hébergeur WordPress pour grands comptes.

Ce que je fais avant d’ouvrir un site au public

Avant d’ouvrir un site au public, je fais un passage manuel, puis je le soumets à une ou deux personnes pour vérification.

Je fais aussi plusieurs contrôles par l’IA, en lui précisant de nombreux points. Par exemple : tester tous les formulaires et toutes les fonctionnalités du site. L’IA prend également, à ma demande, différentes captures d’écran, dont je lui fais faire une analyse détaillée.

Je fais moi aussi beaucoup de captures d’écran, que je soumets une fois à Codex, une fois à Claude Code.

Au total, on n’est pas loin de quatre à cinq vérifications avant l’ouverture au public. Les mêmes captures sont donc lues deux fois, par deux IA différentes.

La recette avec le client

Celui qui valide, en général, c’est le donneur d’ordre, avec moi. Nous reprenons tous les éléments point par point. Nous vérifions ensemble que le site respecte bien le cahier des charges et, une fois que tout est bon, on valide.

Pour la durée, voici ce que prévoit ma feuille de route pour un site vitrine en préparation (qui n’est pas un WordPress, j’y reviens). Deux à trois jours pour la recette et ses contrôles, puis un à deux jours pour la mise en production.

Le client a sa part. Le cahier des charges du même projet prévoit qu’il teste le site de travail, transmette ses retours et s’efforce de répondre aux demandes de validation dans la semaine.

Où faire la recette d’un site WordPress ?

La recette d’un site WordPress se fait sur un environnement de recette, qu’on appelle aussi préproduction ou staging. C’est une copie complète du site, fermée au public, où l’on teste sans risque. Elle se distingue du site en ligne par un accès protégé par mot de passe, une demande de non-indexation et un type d’environnement déclaré à WordPress.

Un mot de passe, puis la case de non-indexation

Pour un contenu qui doit rester privé, Google demande un mot de passe. Sa documentation l’écrit ainsi : "vous devez le protéger par un mot de passe afin que seuls les utilisateurs autorisés puissent y accéder". Une page en noindex, elle, "reste accessible via un lien".

WordPress a bien une case pour cela, dans Réglages, puis Lecture : "Demander aux moteurs de recherche de ne pas indexer ce site". Depuis la version 5.3, elle ajoute une balise noindex,nofollow dans l’en-tête des pages. C’est une demande, et la documentation de l’écran Lecture le dit elle-même : libre aux moteurs de la respecter.

Sur une installation neuve, cette case n’est pas cochée. À vous de la cocher sur la recette… et de la décocher le jour de l’ouverture ! Depuis WordPress 6.9, l’écran Santé du site signale l’oubli par un message sans ambiguïté : "Les moteurs de recherche sont découragés d’indexer ce site."

Écran Réglages, Lecture de WordPress avec la case Demander aux moteurs de recherche de ne pas indexer ce site cochée
La case à cocher sur le site de recette, et à décocher le jour de l’ouverture.

Sur le site vitrine en préparation, le site de travail est protégé par un identifiant. Une sonde surveille cette protection à l’envers : elle attend un refus, le code 401. Si elle reçoit un 200, c’est que la protection est tombée.

Dire à WordPress où il se trouve

WordPress distingue plusieurs types d’environnement : local, development, staging et production. Sans réglage, il se croit en production. La constante WP_ENVIRONMENT_TYPE, dans le fichier wp-config.php, le détrompe.

Attention à la valeur development : elle active le mode de débogage si vous ne l’avez pas réglé vous-même. Or la documentation réserve ces outils aux tests en local et à la préproduction. Pour les couper, voyez comment déboguer WordPress.

Sur la recette, déclarez staging. Le jour de l’ouverture, le site doit répondre production. Le WordPress local qui m’a servi de banc d’essai pour cet article (version 7.1.2, le 30 septembre 2026) répond ceci.

$ wp config get WP_ENVIRONMENT_TYPE
local

$ wp config get WP_DEBUG
1

Un site local, débogage actif : rien d’anormal. La même réponse sur le site qui ouvre demain serait une anomalie bloquante.

Un mot sur ces commandes. Elles passent par WP-CLI, l’outil qui sert à gérer WordPress en ligne de commande, et toutes sont en lecture seule. Je ne publie que celles que j’ai fait exécuter, avec leur vraie sortie. Les lignes qui commencent par # sont mes annotations.

Que vérifier pendant la recette d’un site WordPress ?

Une recette complète couvre huit familles de contrôles. Aucune n’est propre à WordPress, mais chacune y a ses tests. Le tableau donne la carte ; les sections qui suivent ne détaillent que ce que WordPress change.

FamilleCe que la recette vérifieLe test sur WordPress
FonctionnelChaque fonctionnalité promise marcheUn article créé avec un compte Éditeur, puis Auteur ; chaque formulaire envoyé, et son message reçu
ÉditorialTextes définitifs, liens validesRecherche du faux texte "Lorem ipsum", brouillons oubliés, page 404
Graphisme et mobileConformité aux maquettesTrois largeurs d’écran, contraste mesuré texte par texte
RéférencementLe site peut être indexéCase de non-indexation, plan du site, redirections 301
PerformanceLes seuils promis sont tenusMesure sur la recette, puis sur le vrai domaine
AccessibilitéLe niveau promis, ou imposéSelon le type d’organisme
Sécurité et techniqueRien d’oublié, rien de tropComptes de test, fichiers à la racine, débogage, certificat HTTPS et contenu mixte, sauvegarde restaurée
JuridiqueMentions légales, confidentialité, cookiesUn test par texte
Les huit familles de contrôles d’une recette, et le test qui les porte sur WordPress.

Ce tableau ne dit pas comment régler WordPress. Les permaliens, le thème, les extensions de départ : tout cela relève de mes dix premiers gestes après l’installation et de ma check-list de réglages en quinze points. La recette contrôle l’état final, la veille de l’ouverture.

Fonctionnel et éditorial : les parcours, puis les textes

Pour les tests de fonctionnement, la liste minimale de WordPress VIP fait une bonne base. Elle demande, entre autres, de créer un article avec un compte Éditeur, puis avec un compte Auteur, et de vérifier la recherche, les redirections 301 et l’absence d’erreur JavaScript dans la console du navigateur.

J’insiste sur les rôles. La tentation est de tout tester avec son compte administrateur, qui a tous les droits. Vos rédacteurs n’en auront qu’une partie. Sur le site vitrine en préparation, le test est écrit ainsi : un rédacteur non technique crée et publie une actualité complète, seul, avec un vrai compte de rôle auteur.

Côté textes, quelques commandes débusquent les restes de chantier.

# Du faux texte resté dans un contenu ?
$ wp post list --post_type=any --post_status=any --s="Lorem ipsum" --format=count
1

# Des articles restés en brouillon ?
$ wp post list --post_status=draft --format=count
0

# Des commentaires en attente de modération ?
$ wp comment list --status=hold --format=count
0

Sur mon banc d’essai, la première a trouvé un contenu, et un seul "Lorem ipsum" en ligne suffit à faire amateur !

Graphisme et mobile

La référence, ce sont les maquettes validées. On compare page par page, à plusieurs largeurs d’écran, et on mesure les contrastes.

Vous lirez parfois qu’il faut passer le site au "test d’optimisation mobile" de Google. Google a annoncé son retrait à compter du 1er décembre 2023. Testez sur de vrais téléphones.

Référencement : seulement ce qui se joue à l’ouverture

La recette n’est pas un audit SEO. Pour le fond, j’ai un guide du référencement sur WordPress. Ici, je ne garde que ce qui peut empêcher le site d’exister dans Google le jour où il ouvre.

La case de non-indexation, évidemment. Elle a un effet secondaire. Tant qu’elle est cochée, WordPress désactive son plan du site (il en fournit un, sans extension, depuis la version 5.5), et l’adresse /wp-sitemap.xml répond 404.

Une case décochée ne garantit pas pour autant une page indexable. Une extension, le serveur ou le thème peut encore poser un noindex dans le code de la page, ou dans l’en-tête HTTP X-Robots-Tag, que Google lit aussi. Et la balise canonical, qui indique à Google l’adresse de référence d’une page, peut désigner la préproduction. Sur l’accueil, un article et une page clé, contrôlez donc la réponse publique elle-même.

Viennent les redirections. Si le site en remplace un autre, chaque ancienne adresse doit mener quelque part. De lui-même, WordPress sait rediriger un contenu dont le slug a changé. Pour les adresses d’un ancien site, c’est à vous de fournir le plan de redirections, et de le contrôler. Une ancienne adresse renvoyée vers l’accueil ne produit pas de 404 côté serveur, mais Google peut la traiter comme une fausse erreur 404 ("soft 404") : chaque redirection permanente (301) doit mener au contenu équivalent.

Performance : les seuils du cahier des charges

Pour la vitesse, la recette vérifie les seuils écrits au cahier des charges. Si votre document cite encore le FID, corrigez-le. Depuis le 12 mars 2024, l’INP l’a remplacé parmi les Core Web Vitals de Google. Il mesure le temps que met la page à réagir à une action du visiteur.

Accessibilité : le niveau promis, ou le niveau imposé

Tout dépend de qui vous êtes. L’article 47 de la loi du 11 février 2005 ne vise pas tous les sites. Le tableau résume le texte et la page officielle du RGAA, consultés le 30 septembre 2026.

QuiCe que le texte imposeCe que la recette vérifie
Organismes publics, délégataires d’une mission de service public et organismes privés assimilésDes services en ligne accessibles, une déclaration d’accessibilité, un schéma pluriannuel, une mention, visible dès la page d’accueil, qui dit si le site est conforme ou nonAudit selon le RGAA (version 4.1.2 à ce jour), déclaration publiée, mention en page d’accueil
Entreprises à partir de 250 millions d’euros de chiffre d’affaires en France, en moyenne sur les trois derniers exercicesLes mêmes obligationsLes mêmes points
Tous les autres sitesRien au titre de l’article 47Ce que le cahier des charges a promis
Accessibilité : qui doit quoi, d’après l’article 47 de la loi du 11 février 2005.

L’article 47-1 de la même loi confie le contrôle à l’Arcom, qui met d’abord en demeure. Chez les organismes publics et assimilés (1° à 3° de l’article 47), elle constate les manquements aux "dispositions des I, III et IV" : l’accessibilité elle-même, puis la déclaration, le schéma et la mention.

Chez les entreprises au-dessus du seuil (4°), le texte ne vise que les "dispositions des III et IV" : la déclaration, le schéma pluriannuel et la mention. Les plafonds suivent la même ligne, 50 000 € pour l’accessibilité et 25 000 € pour ces obligations. L’article 47 demande pourtant, à ces entreprises aussi, des services accessibles.

Hors de l’article 47 : d’abord le commerce en ligne, ensuite le contrat

L’article 47 n’est pas le seul texte. Depuis le 28 juin 2025, l’article L412-13 du Code de la consommation impose aussi l’accessibilité à certains services, dont le commerce électronique. Les entreprises de services de moins de dix personnes en sont dispensées si leur chiffre d’affaires annuel ou le total de leur bilan ne dépasse pas deux millions d’euros. Les autres exceptions se vérifient au cas par cas, mais une boutique WooCommerce au-dessus de ce seuil doit être accessible, même si son cahier des charges n’en dit rien : sa recette le vérifie, à commencer par le parcours d’achat et le paiement.

Pour les autres sites, l’accessibilité devient une obligation quand le cahier des charges la promet (j’ai détaillé les critères WCAG appliqués à WordPress). Celui du site vitrine liste ce qui sera tenu : contrastes, hiérarchie des titres, navigation au clavier, textes alternatifs, liens explicites. Il précise qu’un audit de conformité complet n’est pas compris.

Sécurité et technique : les fichiers oubliés

Un site en fin de chantier traîne des restes. Des comptes de test, des mots de passe provisoires, des fichiers posés à la racine "juste pour cette fois". La recette fait le ménage, et WP-CLI aide à voir ce qu’on ne voit plus.

$ wp core verify-checksums
Warning: File should not exist: wp-config.bak
Warning: File should not exist: wp-config.lock
Success: WordPress installation verifies against checksums.

$ wp plugin verify-checksums --all
Success: Verified 10 of 10 plugins.

$ wp user list --role=administrator --format=count
1

Lisez bien la première sortie. Elle finit par "Success", et pourtant deux avertissements la précèdent. Deux fichiers rangés à côté de wp-config.php ne font pas partie de WordPress (leurs noms sont simplifiés ici).

L’un est une copie complète de wp-config.php, mot de passe de la base compris. Si le serveur la sert comme un simple fichier texte, elle livre ce mot de passe à qui tombe dessus.

Toutefois, la commande a une limite, inscrite dans son code. L’essai le montre : à la racine, elle signale un fichier inconnu dont le nom commence par wp-. Elle ne signale pas une copie nommée wp-config.php suivie d’un suffixe (wp-config.php.bak, par exemple), ni un fichier qui ne commence pas par wp-.

Sa documentation décrit une option qui étend le contrôle à tout le dossier ; je ne l’ai pas fait exécuter.

Comptes, mots de passe, sauvegarde

Les mots de passe d’application, que WordPress gère depuis la version 5.6, se relisent compte par compte : WP-CLI sait les lister et les trier par date de dernier usage. Ceux du chantier partent avec le chantier, comme les comptes de test, qu’il sait supprimer en réattribuant leurs publications.

Une sauvegarde qu’on n’a jamais restaurée, on ne sait pas ce qu’elle vaut, quel que soit l’outil (voir comment choisir une extension de sauvegarde). Sur le site vitrine, l’environnement de recette sera alimenté en restaurant la sauvegarde du site de travail : la recette teste la restauration au passage.

Juridique : mentions légales, confidentialité, cookies

Ce qui suit cite les textes et en tire un test de recette. Ce n’est pas un avis juridique.

Les mentions légales. L’article 1-1 de la loi pour la confiance dans l’économie numérique liste ce que l’éditeur d’un site met "à la disposition du public". Pour une société, il demande : sa dénomination, son siège social, son numéro de téléphone et, si elle est immatriculée, son numéro d’inscription et son capital.

S’y ajoutent le nom du directeur de la publication, puis le nom, l’adresse et le numéro de téléphone de l’hébergeur. La recette pointe chaque élément sur la page (pour la créer : comment intégrer les mentions légales dans WordPress).

La politique de confidentialité. WordPress sait désigner cette page depuis la version 4.9.6 : la recette contrôle qu’elle est désignée, que son texte est le vôtre, et que le pied de page y mène.

Les cookies. La CNIL demande un consentement préalable au dépôt des traceurs : dans une fenêtre de navigation privée, aucun traceur soumis à consentement ne doit donc apparaître avant un clic, ni après un refus. La suite relève du RGPD appliqué à WordPress.

Quels contrôles WordPress fait-il oublier ?

Les contrôles que WordPress fait oublier sont ceux qu’il semble réussir tout seul : un formulaire qui remercie sans que rien n’arrive, une tâche planifiée qui attend un visiteur, un mode maintenance resté actif. Aucun ne se voit en parcourant les pages…

Les e-mails, jusqu’à la boîte de réception

Un formulaire peut afficher "Merci, votre message a bien été envoyé" sans que personne ne reçoive rien. La fonction d’envoi de WordPress, wp_mail(), répond "vrai" dès qu’elle a traité la demande sans erreur. Sa documentation le précise : cela ne signifie pas que le destinataire a reçu le message.

Le piège n’est pas propre à WordPress. La documentation technique du site vitrine en préparation le décrit pour un autre outil. Sans service d’envoi configuré, la demande de "mot de passe oublié" répond par un code 200, celui du succès, et n’envoie jamais rien. Un code 200 ne prouve pas qu’un e-mail part.

Le test de recette s’écrit donc ainsi : le message du formulaire de contact et l’e-mail de mot de passe oublié arrivent dans la vraie boîte, et quelqu’un les ouvre.

Parmi les causes possibles, l’expéditeur par défaut de WordPress : wordpress@ suivi de votre domaine. Certains hébergeurs bloquent cette adresse quand elle n’existe pas (c’est écrit dans le code de WordPress).

Autre cas, relevé en préparant un projet pour une ETI de distribution. Quand la messagerie du domaine rejette tout expéditeur non déclaré, un formulaire oublié perd ses messages sans bruit (la parade : un envoi par SMTP).

Tâches planifiées et mode maintenance

WP-Cron, le planificateur de WordPress, ne tourne pas à heure fixe : il consulte sa liste à chaque chargement de page. Sur un site de recette que personne ne visite, une tâche prévue à 14 h peut attendre 17 h. L’exemple est celui de la documentation. Une publication programmée qui ne part pas en recette n’est donc pas toujours un bogue.

Certains hébergements remplacent ce mécanisme par une vraie tâche du serveur, en posant la constante DISABLE_WP_CRON. Si la constante est là et que la tâche du serveur manque, plus rien ne se déclenche. Ces commandes lèvent le doute.

$ wp cron test
Success: WP-Cron spawning is working as expected.

$ wp config has DISABLE_WP_CRON
# aucune sortie, code de retour 1 : la constante n'est pas définie

$ wp maintenance-mode status
Maintenance mode is not active.

La dernière répond à une autre question de veille d’ouverture : le site est-il resté en maintenance ? Le mode natif de WordPress repose sur un fichier .maintenance posé à la racine. WordPress cesse d’en tenir compte dix minutes après sa création.

Une page "bientôt disponible" posée par une extension ne s’efface pas toute seule : c’est l’autre visage du mode maintenance de WordPress.

Ce qu’une recette mesurée a trouvé dans une maquette déjà validée

Je vis de WordPress, et l’exemple de recette le plus parlant que j’aie sous la main n’en est pas un. Autant le redire : le site vitrine dont je parle depuis le début est celui d’un établissement scolaire, construit avec un autre outil. Les contrôles se transposent tels quels.

Il fallait montrer au client trois variantes de couleurs de sa future page d’accueil, sur une adresse de démonstration fermée aux moteurs de recherche. La maquette de départ, produite avec un outil de design, était déjà validée par le client. Une simple démonstration, donc.

Elle est quand même passée par une recette, que j’ai fait faire par Claude Code. Un script a comparé chaque variante à la maquette validée : les textes, les images, puis les styles.

Un autre a mesuré le contraste de chaque texte visible, à 1 440 pixels puis à 390 pixels de large. Il le mesure contre ce qui se trouve réellement derrière le texte. Sur une photo, il retient les 5 % de pixels les plus défavorables.

Les seuils sont ceux des WCAG, les règles internationales d’accessibilité, au niveau AA. Le rapport de contraste doit atteindre 4,5 pour 1 pour le texte courant. Il tombe à 3 pour 1 pour les grands textes, à partir de 18 points, ou de 14 points en gras (environ 24 et 19 pixels).

Ce que la mesure a sorti

La mesure a compté 13 textes sous le seuil dans la maquette déjà validée, sur ordinateur comme sur mobile. Treize. Dans un document que le client avait approuvé.

Le contrôle a sorti autre chose. Au survol, le liseré de couleur de quatre cartes disparaissait. Un point-virgule en trop dans les styles, et seule l’ombre s’appliquait. Le défaut a été constaté dans le navigateur, sur les quatre cartes.

La notice de l’outil de design se trompait de seuil : elle rangeait un surtitre de 12,5 pixels en gras parmi les grands textes. À cette taille, le seuil est de 4,5 pour 1. Et les pages chargeaient leurs photos et leur logo depuis le serveur de l’ancien site, celui qui disparaîtra avec son abonnement…

Corriger, remesurer, publier

Les retouches ont été testées dans la page, avec la même mesure. Après la seconde livraison, plus aucun texte sous le seuil : 144 textes mesurés sur ordinateur, 134 sur mobile, pour les trois variantes. Le liseré tenait au survol.

Restait à publier. Les fichiers en ligne ont été comparés aux fichiers contrôlés, empreinte par empreinte : identiques. Code 200, certificat valide. Puis le tour du propriétaire, en ligne : en-tête, animations, compteurs, survol, menu mobile, 10 images sur 10, aucune erreur.

Les contrastes ont été remesurés sur les pages publiées. Et les pages déjà présentes à la même adresse répondaient toujours.

Du premier contrôle enregistré à la publication, l’horodatage donne une heure vingt-quatre. Mon e-mail au client est parti dans le quart d’heure suivant.

Ce qui se transpose à WordPress

Rien de tout cela ne dépend de l’outil. Sur WordPress, maquettes et contrastes se contrôlent sur les pages du thème. La comparaison d’empreintes existe déjà : les commandes verify-checksums la font pour le cœur et pour les extensions. Quant à la dépendance cachée, son équivalent est une image ou un lien qui pointe encore vers l’adresse de recette.

Comment consigner une anomalie dans le cahier de recette ?

Une anomalie se consigne sur une ligne du cahier de recette, et une seule. Cette ligne dit la page concernée, ce qu’on a fait, ce qu’on attendait et ce qu’on a obtenu, avec une capture, une gravité et un statut. Une ligne par anomalie, jamais plusieurs défauts dans la même. C’est ce qui rend chaque correction vérifiable.

Un signalement mal rempli coûte un aller-retour. Pour l’éviter, chaque ligne porte les mêmes champs.

  • la page, avec son adresse exacte ;
  • les étapes pour reproduire le défaut ;
  • le résultat attendu, et la rubrique du cahier des charges qui le promet ;
  • ce qu’on a obtenu à la place, capture à l’appui ;
  • le navigateur et l’appareil ;
  • la gravité ;
  • le statut, avec la date de chaque changement.

Le guide de recette de Marker.io, un éditeur d’outils de signalement de bogues, demande le même socle : ce qui a été testé, les étapes pour reproduire, le résultat attendu, le résultat obtenu et l’environnement.

La gravité se définit par la décision

Bloquant, majeur, mineur : ces mots ne veulent rien dire tant qu’on ne les relie pas à la mise en ligne. Dans mon modèle, chaque niveau répond à une seule question. Peut-on ouvrir avec ce défaut ?

GravitéEffet sur la décisionExemple (cas d’école)
BloquantPas de mise en ligne tant que le défaut existeLe message du formulaire de contact n’arrive pas
MajeurMise en ligne possible, avec une réserve datéeLa page Équipe attend encore deux photos définitives
MineurCorrigé après l’ouverture, sans réserveUne espace manque avant un point d’interrogation
La gravité d’une anomalie, définie par son effet sur la décision de mise en ligne.

Prenons un cas d’école : un site de dix pages, avec un formulaire de contact. La recette remonte vingt anomalies. Si dix-neuf sont mineures et qu’une seule est bloquante, le site n’ouvre pas. Si les vingt sont mineures, il ouvre le jour dit. Le nombre ne décide de rien.

Bogue, ou demande nouvelle

Était-ce écrit au cahier des charges ? Si oui, le défaut se corrige dans le prix convenu. Sinon, la demande est hors périmètre, et l’annexe de mon modèle de cahier des charges prévoit son circuit : "avenant écrit + devis + accord avant réalisation".

Corriger, puis revérifier

Dans mon modèle, une anomalie est ouverte, puis corrigée, puis revalidée. Le dernier statut compte double. "Un ticket fermé n’est pas une correction vérifiée", écrit Marker.io. Son guide demande de retester les défauts bloquants après correction, et pas seulement de les marquer résolus.

Revérifiez aussi autour. Une correction peut, en effet, casser la page voisine : les gens du métier appellent cela un test de non-régression. Dans la démonstration du site vitrine, un contrôle portait justement sur les pages auxquelles personne n’avait touché.

Procès-verbal, réserves et levée des réserves

La recette se termine par une décision. Je vous dis comment je la prends, ce que je propose pour l’écrire, puis ce que disent les textes.

Dans ma pratique

Et s’il reste des réserves ? À ce moment-là, elles sont notées, et j’amende le cahier des charges pour la correction. En général, je traite les derniers points. Cela ne m’arrive que très rarement.

La réserve finit dans le cahier des charges, le document de référence du projet.

Ce que je propose : un procès-verbal

Ce qui suit est une proposition, et non le récit de ma pratique.

Le procès-verbal de recette tient sur une page. Il porte la décision : acceptée, acceptée avec réserves, ou refusée. Il liste les réserves, avec la date à laquelle chacune doit être levée, et reçoit la signature des deux parties. Pour lever une réserve, on rejoue le test qui avait échoué, on constate qu’il passe, et on date la ligne.

Le guide de Marker.io demande lui aussi une validation écrite : "une approbation informelle ne suffit pas quand l’enjeu est élevé".

Ce que disent les textes

Le vocabulaire est celui du droit de la construction. L’article 1792-6 du Code civil y définit la réception comme "l’acte par lequel le maître de l’ouvrage déclare accepter l’ouvrage avec ou sans réserves". Il ne s’applique pas tel quel à un site web.

Un arrêt porte bien, en revanche, sur un site internet : Cour de cassation, chambre commerciale, 26 novembre 2013, n° 12-25.191. Un client avait signé un procès-verbal sans émettre de réserve. Le site ne fonctionnait pas. Le client avait protesté avant et après la signature, et le prestataire n’avait pas réagi à ses réclamations.

Devant la Cour, le prestataire soutenait qu’une réception sans réserve couvre les défauts apparents. Elle a écarté l’argument, en ces termes.

"Mais attendu que l’obligation de délivrance de produits complexes n’est pleinement exécutée qu’une fois réalisée la mise au point effective de la chose vendue"

Les juges d’appel avaient écrit, de leur côté, qu’il en va autrement pour "un site internet dont la mise en oeuvre et la conformité ne peuvent s’apprécier au moment de la seule démonstration mais exigent une utilisation d’une certaine durée".

Dans cette affaire, le procès-verbal signé sans réserve n’a pas fermé la discussion. Les écrits figuraient au dossier : les réclamations du client, avant et après la signature, et le silence du prestataire.

Les limites de cet arrêt : la Cour ne l’a pas publié à son Bulletin. Le pourvoi y invoquait des articles du Code civil (1147 et 1184) que la réforme de 2016 a réécrits, et le client avait protesté par écrit. N’en faites pas une règle générale. Pour votre contrat, consultez un avocat.

Si une réserve n’est jamais levée

Reste alors le droit commun des contrats. L’article 1217 du Code civil énumère ce que peut faire celui envers qui un engagement "n’a pas été exécuté, ou l’a été imparfaitement".

  • "refuser d’exécuter ou suspendre l’exécution de sa propre obligation" ;
  • "poursuivre l’exécution forcée en nature de l’obligation" ;
  • "obtenir une réduction du prix" ;
  • "provoquer la résolution du contrat" ;
  • "demander réparation des conséquences de l’inexécution".

Votre contrat peut prévoir autre chose.

Si personne chez vous ne sait lire une sortie de terminal, un regard extérieur peut faire la recette à vos côtés. Mes interventions d’expert se facturent 190 € HT de l’heure, et le premier appel est offert.

Avant d’accepter votre site, un second avis d’expert.

Découvrir l’expertise

La bascule : le jour de la mise en ligne

La décision est prise, le site ouvre. La bascule se prépare comme le reste : par écrit. Voici ce que prévoit la feuille de route du site vitrine pour ce jour-là.

  • Le feu vert du client, et lui seul, déclenche l’opération.
  • Une sauvegarde de référence est prise avant la bascule, et le retour arrière est prêt.
  • Le DNS du site est modifié, la messagerie ne bouge pas.
  • La protection par identifiant du site de travail est retirée.
  • Le site prend son adresse définitive, et les redirections des anciennes adresses sont activées.
  • Les contenus sont gelés ; la Search Console et les statistiques sont branchées.
  • La surveillance s’inverse : la sonde qui attendait un 401 sur le site de travail attend désormais un 200 sur le domaine définitif.

Combien de temps dure l’opération ? La durée annoncée au client : une dizaine de minutes. Le site de travail et le site définitif sont la même installation : il n’y a aucun contenu à transférer le jour J. L’ancien site reste visible jusqu’au dernier moment.

Ne touchez pas à la messagerie : une bascule de site ne doit jamais couper vos e-mails. Seule l’adresse du site change. Si un prestataire gère votre messagerie, prévenez-le avant le jour J.

Sur WordPress : l’adresse de recette ne doit pas survivre

Un WordPress construit sur une adresse de recette garde cette adresse dans sa base : réglages, contenus, liens. Avant de remplacer quoi que ce soit, comptez. La commande suivante simule le remplacement sans rien écrire (le nom du site local est remplacé par un nom d’exemple).

$ wp search-replace "http://monsite.local" "https://exemple.fr" --dry-run --skip-columns=guid --report-changed-only
Table        Column         Replacements   Type
wp_options   option_value   4              PHP
wp_postmeta  meta_value     1              PHP
wp_posts     post_content   9              SQL
wp_users     user_url       1              SQL
Success: 15 replacements to be made.

Quinze occurrences, dans quatre tables. L’option --dry-run déroule toute l’opération et affiche le rapport, sans toucher à la base. La commande sait traiter les données sérialisées de PHP, d’après sa documentation. La mécanique complète est dans mon tutoriel de refonte d’un site WordPress.

Après la bascule, relancez la même simulation : elle ne doit plus rien trouver. Puis videz les caches, décochez la case de non-indexation, et retestez chaque formulaire sur le vrai domaine.

Une précaution vient de WordPress VIP : avant de toucher au DNS, sa documentation conseille d’afficher le site à sa future adresse depuis un seul poste, en modifiant son fichier hosts.

Le lendemain, puis une semaine après

Le lendemain de l’ouverture, on rejoue sur le vrai domaine les tests qui dépendent de l’adresse : formulaires, indexation, redirections, tâches planifiées. Une semaine après, on lit ce que seul l’usage révèle. Les erreurs remontées par la Search Console, la vitesse mesurée chez de vrais visiteurs, et les réserves encore ouvertes.

QuandContrôleRésultat attendu
Le lendemainUn message envoyé par chaque formulaire, depuis le vrai domaineReçu dans la vraie boîte
Le lendemainwp option get blog_public et l’adresse du plan du siteLa commande répond 1, le plan du site s’affiche
Le lendemainL’accueil, un article et une page clé, sur le vrai domaineRéponse 200, aucun noindex dans la page ni dans l’en-tête X-Robots-Tag, canonical sur le vrai domaine
Le lendemainUn échantillon d’anciennes adressesUne redirection 301 vers la page qui les remplace, puis une réponse 200, aucune erreur 404
Le lendemainwp cron test, et la sauvegarde de la nuit"Success", et une sauvegarde datée du jour
Une semaine aprèsLa Search ConsoleDes pages indexées, pas de vague d’erreurs 404
Une semaine aprèsLa vitesse, sur le vrai domaineLes seuils du cahier des charges
Une semaine aprèsLes réserves du procès-verbalLevées, ou redatées par écrit
Une semaine aprèsLes comptes et les mots de passe du chantierSupprimés, ou changés s’ils ont circulé par e-mail
Les contrôles du lendemain et de la semaine suivante.

L’indexation vérifiée, puis 329 redirections

Sur le site vitrine, l’hypothèse de départ était simple : les anciennes actualités n’étaient presque pas dans Google. Une recherche avec l’opérateur site: a montré le contraire. Elles y étaient.

La conséquence : un plan de 329 redirections, que le document de migration dit "non négociable". Et le contrôle est écrit d’avance. Après la mise en ligne, aucune de ces 329 adresses ne doit renvoyer une erreur 404. Sur un échantillon d’abord, dans la Search Console après.

Que contient un cahier de recette pour WordPress ?

Voici ce que contient mon modèle de cahier de recette, à télécharger en Word et en PDF en bas de cette page. Il se remplit avec mon modèle de cahier des charges, et les deux documents se lisent côte à côte : chaque partie renvoie à la rubrique dont elle vérifie la promesse.

Partie du cahier de recetteCe qu’elle contientRubrique du cahier des charges
Mode d’emploiQui remplit quoi, dans quel ordre, quand signerSans objet
0. Informations généralesProjet, adresse de recette, version de WordPress, dates, valideur, prestataire0. Informations générales
1. Règle d’acceptationGravité définie par la décision ; anomalie ou demande hors périmètre12. Recette et critères de validation, annexe
2. Contrôles fonctionnelsFormulaires et messages reçus, recherche, comptes et rôles, paiement3. Périmètre fonctionnel
3. Contenus et parcoursPages prévues, textes définitifs, liens, page 404, redirections4. Arborescence et parcours, 7. Contenus, 8 (redirections)
4. Graphisme et mobileMaquettes, largeurs d’écran, contrastes6. Charte graphique et design
5. Référencement, performance, accessibilitéIndexation, plan du site, balises de titre, vitesse, accessibilité8. Référencement, performance, accessibilité
6. Technique et sécurité WordPressEnvironnement, débogage, tâches planifiées, sauvegarde restaurée, comptes, fichiers oubliés5. Contraintes techniques, 10. Maintenance et reprise des accès
7. JuridiqueMentions légales, confidentialité, cookies5. Contraintes techniques (conformité RGPD), et le contrat
8. Registre des anomaliesDate, page, description, capture, gravité, statut12
9. Procès-verbal de recetteDécision, réserves et dates de levée, signatures12
10. Bascule et suiviJour de la mise en ligne, lendemain, semaine suivante, prise en main9. Budget et planning, 10, 11
AnnexeLes commandes WP-CLI de ce guideSans objet
La trame d’un cahier de recette pour WordPress, partie par partie.

La recette qui ne s’arrête pas

Sur wpformation.com, la recette continue tous les jours. Chaque matin, un contrôle automatique interroge 18 adresses du site et compare la réponse à celle qui est attendue. L’une de ces adresses n’existe pas, exprès : elle doit répondre 404. Si elle répond autre chose, ou si une seule des dix-sept autres flanche, je reçois un e-mail.

Ce contrôle est né d’un raté. En avril 2026, six adresses du site ont répondu 404 pendant quatre jours, sans aucune alerte.

Pour un site ouvert depuis longtemps, l’exercice change de nom et devient un audit : j’en déroule un dans mon audit WordPress en 13 points de contrôle.

Un dernier conseil, qui ne demande aucun outil. N’attendez pas la veille de l’ouverture pour écrire votre recette : écrivez-la le jour où vous rédigez le cahier des charges. Chaque promesse, avec son test en face.

Le jour venu, vous n’aurez plus qu’à dérouler… et la recette de votre prochain site sera déjà à moitié prête.

Questions fréquentes

Qui valide la recette d’un site web ?

Le donneur d’ordre, avec le prestataire. Ils reprennent le cahier des charges point par point et vérifient ensemble que le site le respecte. Le nom de la personne qui valide côté client s’écrit dans le cahier des charges, avant le début du projet.

Comment vérifier que WordPress ne bloque pas l’indexation ?

Regardez la case "Demander aux moteurs de recherche de ne pas indexer ce site", dans Réglages, puis Lecture : elle doit être décochée. En ligne de commande, wp option get blog_public doit répondre 1. Depuis WordPress 6.9, l’écran Santé du site signale aussi la case cochée. Tant qu’elle l’est, le plan du site natif répond 404. Contrôlez ensuite la réponse publique de quelques pages : aucun noindex dans le code ni dans l’en-tête X-Robots-Tag, et une balise canonical qui désigne le vrai domaine.

Un procès-verbal signé sans réserve empêche-t-il toute réclamation ?

Pas nécessairement. Dans un arrêt du 26 novembre 2013 (n° 12-25.191), un procès-verbal avait été signé sans réserve pour un site qui ne fonctionnait pas, et la Cour de cassation a approuvé les juges d’avoir retenu un manquement du prestataire. L’arrêt n’est pas publié au Bulletin : pour votre contrat, consultez un avocat.

Sources

Toutes lues le 30 septembre 2026 ; citations anglaises traduites en français.

Word + PDF
WPFormation
Cahier
de recette
WordPress
11 parties
Modèle gratuit

Contrôles préremplis.
Procès-verbal à signer.
Word éditable + PDF.

  • Chaque contrôle relié à la rubrique du cahier des charges qu'il vérifie
  • Bloquant, majeur, mineur : la gravité définie par la décision de mise en ligne
  • La bascule : le jour J, le lendemain, une semaine après

Double opt-in : un email de confirmation à valider pour recevoir le modèle. Newsletter max 2/mois. WPFormation utilise les données saisies, via Brevo, pour votre inscription et les emails annoncés, avec votre consentement. Données jamais revendues. Désabonnement en 1 clic. Vos droits et la conservation de vos données

Fabrice Ducarme, formateur WordPress
Fabrice Ducarme

Référence francophone WordPress depuis 2012. Expert en IA (Claude, Gemini) et développement Headless (Next.js), je forme les professionnels à maîtriser l'écosystème web d'aujourd'hui et de demain.

Comment j'utilise l'IA pour écrire ces articles