Créer un modèle de page d’erreur 404 pour WordPress

Mis à jour le :

Une erreur 404 survient lorsqu’une page ou un article de votre blog est inaccessible.

Avec WordPress, un simple fichier 404.php, ou le modèle Page 404 si vous utilisez un thème à blocs, vous permettra d’optimiser cette fameuse page d’erreur dite 404 et ainsi augmenter le nombre de pages vues.

À titre d’exemple, voici le message qu’affichait WordPress Channel en 2010 en cas de contenu inaccessible. C’était le message par défaut, guère attractif pour les visiteurs et encore moins explicite.

Capture d'écran - Exemple d'erreur 404 sur WordPress Channel
Désolé, mais la page que vous recherchez ne peut être trouvée ou n’existe plus.

Pour afficher ce type de page, il suffit d’indiquer un URL incorrect – par exemple à partir du permalien d’un article.

La méthode dépend de votre thème. Avec un thème classique, créez un fichier 404.php comme expliqué ci-dessous. Avec un thème à blocs, comme Twenty Twenty-Five, rendez-vous directement à la section consacrée au modèle Page 404 : aucun fichier à créer. Vous reconnaîtrez un thème à blocs au sous-menu Apparence > Éditeur.

Dans les deux cas, WordPress envoie le code HTTP 404 avec cette page, comme Google le recommande pour les pages introuvables. Méfiez-vous donc des extensions qui redirigent toutes les erreurs 404 vers la page d’accueil : visiteurs et moteurs de recherche ne reçoivent alors plus ce code.

Création du fichier 404.php

Commencez par vous connecter sur votre serveur FTP, avec FileZilla ou Cyberduck par exemple, puis localisez le dossier /wp-content/themes/NOM_DU_THEME/. Si votre thème reçoit des mises à jour, travaillez plutôt dans un thème enfant : un fichier modifié dans le thème lui-même serait écrasé à la prochaine mise à jour.

À l’intérieur du dossier de votre thème, dupliquez le fichier page.php, ou à défaut index.php. Nous allons reprendre l’intégralité de la structure du fichier pour notre page 404. Avec un thème enfant, copiez ce fichier depuis le dossier du thème parent vers celui du thème enfant.

Si le fichier 404.php existe déjà, éditez-le, ou copiez-le dans votre thème enfant !

Ouvrez donc le fichier dupliqué puis renommez-le 404.php. Ne changez pas ce nom de fichier !

Inutile de déclarer ce fichier : selon la hiérarchie des modèles, WordPress l’utilise automatiquement pour toute adresse introuvable, à la place d’index.php.

Éditez directement le code source pour y insérer des commandes PHP. Vous pourrez ainsi afficher les articles les plus récents, les articles les plus populaires ou encore utiliser des commandes propres à certains plugins.

De façon plus simple, commencez par modifier le texte et insérez pourquoi pas une image.

Exemple de page 404

Capture d'écran - Page 404 modifiée sur WordPress Channel
Un Blue Screen of the Death, c’est pas mal non ?

Le code de cette page de 2010 dépendait de son thème, utilisait un paramètre de requête déprécié depuis WordPress 3.1 et n’appelait pas get_footer(), indispensable pour afficher le pied de page et charger ses scripts. En voici une version actualisée, qui reprend le même principe : un titre, un message, le formulaire de recherche, les 10 articles les plus commentés et un lien vers la page d’accueil. Bien entendu, il vous faudra adapter les balises et les classes à votre thème, en vous inspirant de votre fichier page.php.

<?php
/**
 * 404 template: displayed when the requested page cannot be found.
 */

get_header();
?>

<div class="wpc-404">
	<h1><?php esc_html_e( 'Error 404', 'wpchannel' ); ?></h1>
	<p><?php esc_html_e( 'Oops, the page you are looking for cannot be found. Try a search or one of the links below.', 'wpchannel' ); ?></p>

	<?php get_search_form(); ?>

	<?php
	// The 10 most commented posts, without adding the sticky posts on top.
	$wpc_popular = new WP_Query(
		array(
			'posts_per_page'      => 10,
			'orderby'             => 'comment_count',
			'ignore_sticky_posts' => true,
			'no_found_rows'       => true,
		)
	);

	if ( $wpc_popular->have_posts() ) :
		?>
		<h2><?php esc_html_e( 'Most commented posts', 'wpchannel' ); ?></h2>
		<ul>
			<?php
			while ( $wpc_popular->have_posts() ) :
				$wpc_popular->the_post();
				?>
				<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
				<?php
			endwhile;
			wp_reset_postdata();
			?>
		</ul>
	<?php endif; ?>

	<p><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php esc_html_e( 'Back to the home page', 'wpchannel' ); ?></a></p>
</div>

<?php
get_footer();

Les textes, en anglais, passent par les fonctions de traduction de WordPress : remplacez le domaine wpchannel par celui de votre thème, ou saisissez directement vos propres textes en français. Le paramètre ignore_sticky_posts évite que vos articles épinglés s’ajoutent en tête de liste.

Pour aller plus loin, la documentation officielle détaille la création d’une page 404 dans un thème classique (en anglais).

Avec un thème à blocs : le modèle Page 404

Avec un thème à blocs, comme Twenty Twenty-Five, la page d’erreur est un modèle composé de blocs, que vous modifiez sans écrire de code. Rendez-vous dans Apparence > Éditeur, cliquez sur Modèles, puis sur Page 404. Modifiez la page comme un article : texte, image, bloc Recherche, bloc Derniers articles… puis cliquez sur Enregistrer.

Éditeur du site de WordPress avec le thème Twenty Twenty-Five : le modèle Page 404 est ouvert (barre du haut « Page 404 · Modèle », bouton Enregistrer en haut à droite). L’aperçu montre l’en-tête Site démo avec le menu Accueil, À propos, Prestations, Contact, une photo d’arbre en noir et blanc, le titre « La page est introuvable », le texte invitant à faire une recherche et le bloc Recherche en entier (champ « Saisissez ici… » et bouton Rechercher) ; la barre latérale, onglet Modèle, décrit le modèle Page 404 et liste son contenu (Entête, Pied de page).
Le modèle Page 404 se modifie dans l’éditeur de site, sans code

Si votre thème ne propose pas ce modèle, créez-le avec le bouton Ajouter un modèle de l’écran Modèles. Vos modifications sont enregistrées dans la base de données et non dans les fichiers du thème : une mise à jour du thème ne les efface pas.

Pour limiter les 404 à la source, apprenez à détecter les erreurs 404 avec Broken Link Checker.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

12 réponses

  1. Avatar de Livia
    Livia

    Au secours !!

    J’ai vouu suivre ton tuto et je suis franchement pas douée pour ce genre de trucs …

    Je suis sur wordpress, thème alyoum.

    Un fichier 404.php existe déjà. Je l’ai donc modifié … Et certainement mal fait car maintenant, TOUTES les pages de mon site (sauf accueil) s’affichent en 404 ! Donc, c’est la panique !

    Mon site entier est en 404 !! 0_0

    J’espère que tu verra ce message vite, parce-qu’ici c’est la débandade, j’ai le cerveau qui fume !

    ps : sinon j’adore ton site et tous ces conseils ! (je suis juste très débutante encore)

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Hello,

      je ne vois aucune 404 sur ton site… si tu modifies le fichier 404.php cela n’aura pas de répercussions sur le reste du site. 😉

  2. Avatar de haligator
    haligator

    Bonjour,
    Comment faire pour être sûr que Google désindexe ces pages (je viens de supprimer des tas de tags pour éviter le duplicate et, je l’espère, remonter un peu dans les résultats Google).
    Merci d’avance de vos conseils et recommandations.
    Hal

    1. Avatar de Aurélien Denis
      Aurélien Denis

      En utilisant un plugin SEO qui indiquera aux moteurs de ne pas indexer vos pages de tags.

      1. Avatar de haligator
        haligator

        Merci. J’utilise le All in One SEO Pack, et j’avais simplement fait une grosse boulette et décoché « Use noindex for the 404 page: » ^_^
        Par contre après nettoyage des tags, resoumissions du Sitemap, et ce paramétrage corrigé, après 2 semaines, toujours pas de prise en compte par Google…
        @+

  3. Avatar de Obsessio
    Obsessio

    Bonjour, je viens de me créer mon ficher 404.php, pas de soucis.
    Et histoire de tester, je cherche une page qui n’existe pas, je tombe bien sur la page 404, mais j’ai l’erreur suivante dans la console Firebug :
    « NetworkError: 404 Not Found –
    C’est nomal ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui 😉

  4. Avatar de LinusMinus
    LinusMinus

    Bonjour,
    Super tuto !

    Ce tuto est-il valable pour les dernières version de Worpress ? genre TwentyTwelve ? je vois que la structure a légèrement changé.
    J’hésite de l’appliquer sur mon blog :/

    Merci et bonne continuation

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Le tutoriel date… le plus souvent consiste à créer ou à modifier le fichier 404 dans le dossier du thème qui normalement doit en avoir un par défaut.

  5. Avatar de Faitmain-Faitcoeur
    Faitmain-Faitcoeur

    Merci bien pour ce tuto.
    Le surf se fait vitesse grand V, une page 404 standard (moche) et le visiteur zappe.
    J’ai gardé la bonne idée de la liste du top 10 des posts.

  6. Avatar de Olivier C
    Olivier C

    Je suis assez d’accord avec la remarque de Mealin. C’est cette philosophie que j’avais adopté pour mon modèle de page 404… qui du coup ne m’avais pas demandé beaucoup d’effort.

  7. Avatar de Mealin
    Mealin

    Quelques belles pages 404 dans ton dernier lien !

    Personnellement je suis partisan du moindre changement niveau intégration … histoire que cela se ressente le moins possible.

    Plus la page est différente du design normal du site plus j’ai tendance à fuir directement sans demander mon reste.

    En ce sens en zieutant vite fais le code que vous proposez je ne suis pas sûr que l’absence de sidebar soit si profitable que ça. En tout cas elle est belle et intégrée au design c’est toujours ça …

    Après je suis très loin d’être en position de donner des conseils vu mon «  » » »design » » » » perso ^^