Alsacreations.com - Apprendre - Archives (septembre 2011)

Les dernières ressources publiées sur Alsacreations.com

Le: 22 09 2011 à 14:09 Auteur: Geoffrey C.

Tutoriel WordPress

L'erreur 404 apparait lorsqu'une page est introuvable. C'est une erreur plus ou moins fréquente qui indique simplement que le document recherché n'est plus disponible par l'adresse renseignée dans la barre d'adresse. Cela peut être causé par une erreur d'écriture d'un lien, ou par un déplacement de fichier dont le lien pour y accéder n'aurait pas été mis à jour (soit sur le site, soit sur le moteur de recherche qui n'a pas encore eu le temps de mettre à jour sa base de données).

C'est assez typique des CMS pour lesquels les contenus peuvent beaucoup plus facilement être mis à jour, les pages et articles peuvent très rapidement être renommés ou supprimés, les erreurs 404 sont donc vite arrivées.

Wordpress propose dans son template par défaut une page 404.php très basique.
Beaucoup de Webdesigners s'amusent à transformer cette page en un élément graphique original, il y a même des sites spécialisés qui référencent ce type de page sur critère de l'originalité.

En dehors de l'aspect graphique, cette page peut facilement se voir attribuer une fonction d'alerte qui va permettre au webmaster d'être prévenu de son affichage.

Je vous présente un code PHP à placer dans la page 404.php de WordPress, ou à exécuter/afficher sur la condition is_404()

Ce code récupère les informations de navigation de l'utilisateur (url de provenance et url demandée) et envoie un rapport par e-mail au Webmaster. Idéal pour corriger ses erreurs rapidement :)

Voici un code entièrement commenté pour réaliser une telle page. Le reste de la structure est à réaliser par vos soins, bien entendu.

Vous ';

	// si le visiteur a tapé l'adresse manuellement
	if (!isset($_SERVER['HTTP_REFERER'])) :
		$output_p .= 'avez essayé de rejoindre la page ';
		$output_bonux = 'Tout n\'est pas perdu !'; //optionnel

	// si le visiteur a cliqué sur un lien (referer)
	elseif (isset($_SERVER['HTTP_REFERER'])) :
		$output_p .= 'avez cliqué un lien pour rejoindre la page ';

		$failuremess = "Un utilisateur a essayé d'aller à la page $website".$_SERVER['REQUEST_URI']."
et a reçu une erreur 404 (page not found). ";
		$failuremess .= "Il venait de l'url : ".$_SERVER['HTTP_REFERER'];
		
		$headers = 'From: '.$websitename.' '."\r\n";
		$headers .= 'Content-Type: text/html; charset="UTF-8"'."\r\n";

		$mailing = mail($adminemail, "[".$websitename."] 404 : ".$_SERVER['REQUEST_URI'], $failuremess, $headers);
	
		// si le mail est bien envoyé
		if($mailing) : 
			$output_bonux .= "Un administrateur a aussi été prévenu du problème par e-mail. Il fera le nécessaire le plus rapidement possible.";
			
		// s'il ne l'est pas
		else : 
			$output_bonux .= "L'administrateur du site aurait dû être prévenu mais le mail n'a pas pu lui parvenir.
"; $output_bonux .= "Si vous souhaitez lui signaler le problème, merci de copier le message suivant :
"; $output_bonux .= "Referer : ".$_SERVER['HTTP_REFERER']."
"; $output_bonux .= "Request : $website".$_SERVER['REQUEST_URI']."
"; $output_bonux .= "à l'adresse suivante ".$adminemail; endif; endif; // on termine notre paragraphe, // il s'agit de la partie qui apparait de toute manière $output_p .= ':
'.$website.$_SERVER['REQUEST_URI'].'
'; $output_p .= ' et elle semble ne pas exister.
'; $output_p .= $output_bonux.'
'; $output_p .= 'Vous pouvez revenir en arrière et essayer à nouveau, ou effectuer une recherche :

'; // affichons le texte echo $output_p; // affichons le formulaire de recherche maintenant get_search_form(); /* ou utilisez une fonction "moins wordpress" comme include(TEMPLATEPATH . "/searchform.php"); */ ?>

Bien entendu ce code est très minimaliste et peut largement être optimisé avec quelques contrôles ou informations supplémentaires.
Il n'est pas destiné uniquement à WordPress puisqu'il vous suffit de remplacer les fonctions prédéfinies (blog_info() ou get_search_form()) par vos fonctions/variables personnelles pour l'adapter à un autre type de site web.

J'espère que cette astuce vous servira !

Source originale : Une page 404 utile sous WordPress