Catégories
Développement

Personnaliser sa page 404 sous WordPress

Profiter de la page 404 (qui s’affiche lorsqu’une page n’est pas trouvée) pour en tirer avantage.
Modifier la page 404 avec les marqueurs conditionnels.
Temps de lecture :  2 minutes

Lorsque le visiteur tente d’accéder à une page que WordPress ne peut trouver, une page spéciale est affichée. Il s’agit de la page 404, du nom de l’erreur HTTP provoquée par une page inexistante.
Nous verrons dans cet article comment profiter de cette page 404.

Le visiteur peut se trouver désorienté lorsque la page 404 ne fournit pas assez d’informations. De plus, vous pouvez profiter de cette page pour vous prévenir par mail que les visiteurs cherchent une page spécifique. L’erreur peut provenir d’un lien qui n’a pas été adapté lors d’une modification ou suppression d’un contenu (article, page, fichier media).

Les marqueurs conditionnels peuvent vous aider, en ajoutant quelques tests sur la page 404.

Procédure pour modifier la page 404

Dans l’interface d’administration de WordPress, cliquez sur « Apparence », puis « Editeur ».

Sélectionnez parmi les modèles (templates) « Modèle pour l’erreur 404 (404.php) ».

Voici un exemple, basé sur le thème « Twenty fifteen » :

<?php
/**
 * The template for displaying 404 pages (not found)
 *
 * @package WordPress
 * @subpackage Twenty_Fifteen
 * @since Twenty Fifteen 1.0
 */

get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <section class="error-404 not-found">
                <header class="page-header">
                    <h1 class="page-title"><?php _e( 'Oops! That page can&rsquo;t be found.', 'twentyfifteen' ); ?></h1>
                </header><!-- .page-header -->

                <div class="page-content">
                    <p><?php _e( 'It looks like nothing was found at this location. Maybe try a search?', 'twentyfifteen' ); ?></p>

                    <?php 
                    // some variables for the script to use
                    // if you have some reason to change these, do.  but wordpress can handle it
                    $adminemail = get_bloginfo( 'admin_email' ); // the administrator email address, according to wordpress
                    $website = home_url(); // gets your blog's url from wordpress
                    $websitename = get_bloginfo( 'name' ); // sets the blog's name, according to wordpress
                    $url = esc_html( $_SERVER['REQUEST_URI'] );
                    if ( ! wp_get_referer() ) {
                        // politely blames the user for all the problems they caused
                        $text = 'Vous avez essayé de joindre '; // starts assembling an output paragraph
                        $casemessage = 'Tout n\'est pas perdu !';
                    } else {
                        // this will help the user find what they want, and email me of a bad link
                        $text = 'Vous avez cliqué sur un lien vers '; // now the message says You clicked a link to...
                        // setup a message to be sent to me
                        $failuremess = 'Un visiteur a demand&eacute; la page ' . $website . $url;
                        $failuremess .= ', mais une erreur 404 est survenue.<br />';
                        $failuremess .= 'Origine de la demande&nbsp;:  ' . wp_get_referer() . '<br />';
                        mail( $adminemail, '404 sur ' . $url, $failuremess, 'From: ' . get_bloginfo( 'name' ) . ' <noreply@' . $website . '>' ); // email you about problem
                        $casemessage = 'Un administrateur a &eacute;t&eacute; alert&eacute; du probl&egrave;me.';// set a friendly message
                    }
                    $text .= $website . $url;
                    echo '<p>';
                    echo $text.'et cela n\'existe pas.<br />';
                    echo $casemessage.'<br />Vous pouvez tenter de revenir en arri&egrave;re ou utiliser la recherche :<br />':
                    get_search_form(); 
                    ?>
                </div><!-- .page-content -->
            </section><!-- .error-404 -->

        </main><!-- .site-main -->
    </div><!-- .content-area -->

<?php get_footer(); ?>

Ce code sert simplement d’exemple rapide et ne devrait pas être utilisé tel quel. Par exemple, au lieu de placer les message en français, il faudrait définir un fichier de traduction et y faire appel, si l’aspect multilingue est nécessaire :

_e( 'My string key', 'my_language_file_name' );

Info complémentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et Google Politique de confidentialité et Conditions d'utilisation appliquer.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.