Page 404 et moteur de recherche Wordpress

Wordpress Ajouter un commentaire

Par défaut, Wordpress génère une page des plus sobre suite à l’erreur 404.

Lorsque j’étais sous Drupal, j’utilisais Search 404. Un module qui permet d’effectuer une recherche à partir des mots clés de l’URL.

Tout fraîchement arrivé sous WP je trouve AskApache Google 404 comme étant « The must have ».

Je ne sais pas vous, mais d’après mes statistiques 90% des erreurs 404 sont du à une mauvaise indexation de Google.
AskApache Google 404 propose d’afficher sur votre site, le résultat de la recherche que Google produit en fonction des mots clés de l’URL.
Dans mon cas, strictement aucun intérêt. Effectuer une boucle d’affichage sur des pages inexistantes n’a aucun sens.

Le seul moyen d’afficher des articles dont je suis sur de l’existence, c’est de passer par le moteur de recherche interne à WP.
Je vous l’accorde que je perds la pertinence des requêtes Google, mais au moins les liens seront valides.

Voici donc le code à mettre dans le fichier 404.php (« Admin -> Apparence -> Éditeur de page »)

<?
$search_term 	= urldecode(substr ($_SERVER['REQUEST_URI'], 1));
$order		= array('', '/', '_', '-');
$replace		= '+';
$search_term 	= str_replace($order, $replace, $search_term);
$search_url 	= get_bloginfo('url') . '/?s=';
$full_search_url 	= $search_url . $search_term;
$full_search_url 	= preg_replace('/ /', '%20', $full_search_url);
print (file_get_contents ($full_search_url));
?>

Petite explication :

  • On récupère les paramètres de l’url
  • On remplace  » / – _ » par « + » qui est le symbole AND entre deux expressions recherchées sous Wordpress.
  • On affiche brute de pomme le résultat qui aurai été effectué de manière manuelle.

Avis aux amateurs de solution plus élégante.


Vous avez aimé l'article ? Alors vous aimerez surement :
Mots-clefs :, , ,

9 réponses to “Page 404 et moteur de recherche Wordpress”

  1. Gérer son référencement : Quelques règles Says:

    [...] contre, il va y avoir un impact sur l’ensemble de mes backlinks… Mais comme il y a une page 404 de la mort, il n’y a aucune d’avoir peur des répercutions :p [...]

  2. Nico Says:

    Bonjour,
    Je trouve cette idée très pertinente. Je voudrais l’adopter pour mon blog mais je voudrais afficher une phrase d’explication avant « Resultat de la recherche » mais je suis une bille en php.. un petit conseil ?

  3. Thomas Tourlourat Says:

    Il suffit simplement d’ajouter un autre print

    <?
    print ("Mon texte HTML <br />");
     
    $search_term 	= urldecode(substr ($_SERVER['REQUEST_URI'], 1));
    $order		= array('', '/', '_', '-');
    $replace		= '+';
    $search_term 	= str_replace($order, $replace, $search_term);
    $search_url 	= get_bloginfo('url') . '/?s=';
    $full_search_url 	= $search_url . $search_term;
    $full_search_url 	= preg_replace('/ /', '%20', $full_search_url);
    print (file_get_contents ($full_search_url));
    ?>
  4. Nico Says:

    Merci pour ta réactivité, malheureusement j’avais déjà essayé cela… Le probleme c’est que ca n’affiche ce texte que tout en haut à droite et non dans le template. Je ne sais pas si je suis très clair (ex: http://www.synergeek.fr/communication/erreur)

  5. Nico Says:

    en haut à gauche je voulais dire

  6. Thomas Tourlourat Says:

    En effet, j’ai parlé trop vite :p

    Cette astuce pour la page 404 n’est pas la meilleur. En effet, il s’agit d’exécuter une recherche standard en utilisant les mots qui ont conduit l’utilisateur sur la 404. On affiche simplement le résultat de la recherche.

    Pour afficher du texte entre les articles trouvés, il faut modifier le résultat de la recherche, fichier : search.php
    Mais cette solution fait plutôt office de « bricoleur » qu’autre chose.

    Désolé.

  7. Nico Says:

    ok, en fait ce qu’il faudrait c’est utiliser la page 404.php standard dans laquelle on pourrait donner une expliquation genre « oops la page est introuvable… Mais je peux vous proposer les articles suivants: » et là faire tourner ton script. tu crois que c’est possible ?

  8. Thomas Tourlourat Says:

    Pas dans l’état non.. Désolé

  9. Nico Says:

    Bon c’est pas grave.. J’ai quand même essayer de le faire tourner avec le plugin exec-php pour faire tourner un script php dans un post wordpress mais je n’ai pas réussi à faire fonctionner.

    Merci quand même

Ajouter une réponse

Designed by NattyWP Wordpress Themes.
Images by desEXign.