Sous wordpress, il est parfois necessaire de rediriger une page inexistante (page 404) vers une autre page.
Besoin d’un spécialiste WordPress pour votre projet ? Contactez-moi
En général cela est utilisé lorsque l’URL d’une page à été modifiée, ce qui à pour résultat d’afficher une page avec une erreur 404, qui est la page indiquant qu’aucun contenu WordPress n’a été trouvé.
Pour résoudre ce problème, dans un soucis d’optimisation SEO, on a donc besoin d’indiquer au navigateur la nouvelle adresse.
Ces lignes sont à rajouter dans le fichier functions.php
de votre thème WordPress :
1. Une première fonction pour retouver l’adresse utilisateur
La fonction PHP qui va nous aider à trouver l’adresse actuelle sur laquelle se trouve le visiteur.
// get current URL function wp458_get_current_URL() { $current_url = 'http'; $server_https = $_SERVER["HTTPS"]; $server_name = $_SERVER["SERVER_NAME"]; $server_port = $_SERVER["SERVER_PORT"]; $request_uri = $_SERVER["REQUEST_URI"]; if ($server_https == "on") $current_url .= "s"; $current_url .= "://"; if ($server_port != "80") $current_url .= $server_name . ":" . $server_port . $request_uri; else $current_url .= $server_name . $request_uri; return $current_url; }
C’est une fonction PHP classique, vous retourant l’URL de destination du visiteur
2. La fonction de redirection WordPress
// Template Redirect add_action( 'template_redirect', 'wp458_custom_redirect', 1 ); function wp458_custom_redirect() { // si c'est une 404 if(is_404()){ $thislink = wp458_get_current_URL(); // L'adresse actuelle $sitelink = get_bloginfo('url'); // Adresse du site if($thislink == $sitelink . '/wordpress/'){ wp_redirect( $sitelink . '/tag/wordpress/' ); die; } } }
Cette fonction utilise le système de redirection de WordPress à savoir wp_redirect
, qu’on utilise seulement dans la condition où la page serait de type 404 grâce à is_404()
.
Attention le Hook « Template_redirect » est très important ici car il se lance avant le chargement de la page. Cela évite notamment les ereurs « Headers already sent » en PHP.
Si vous avez des questions ou une idée pour améliorer ce code, n’hésitez pas à me contacter.