Rediriger vers l’article lorsque la recherche ne retourne qu’un résultat
Cette astuce permet d’améliorer la navigation de votre site en redirigeant vers le seul article d’une recherche fructueuse.
Voici une astuce sympa qui améliorera la navigation de l’utilisateur sur votre site. Lors d’une recherche, il arrive parfois qu’il n’y ait qu’un seul résultat retourné.
Au lieu de rediriger l’utilisateur vers la page de résultats de recherche et le laisser cliquer sur le lien de l’article, on va directement le rediriger vers l’article correspondant à sa recherche.
Si l’utilisateur cherchait un article en particulier et qu’il tombe directement sur l’article souhaité, je pense qu’il gardera une bonne image du site en partant.
Ajoutez cette fonction dans functions.php
présent à la racine de votre thème :
add_action('template_redirect', 'redirect_search_to_single_post_result'); function redirect_search_to_single_post_result() { if( is_search() ) { global $wp_query; if ($wp_query->post_count == 1) { if( $wp_query->posts['0']->post_type == 'post' ) wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); } } }
template_redirect
permet d’intercepter le choix d’affichage du template selon son contenu.
Ici, on intercepte la recherche et si on trouve ne qu’un seul article correspondant au résultat, on redirige vers ce dernier.
20 Commentaires
Ça m’a l’air excellent ça ! Je garde ça sous le coude pour tester pluss tard.
Voilà un excellent truc. Je teste tout de suite.
Merci pour l’astuce très efficace !
Est-ce que dans le même esprit il serait possible lorsque qu’un internaute arrive via une recherche google sur une page de tag ne contenant qu’un résultat, de le rediriger directement sur la page ?
Change juste is_search() par is_tag().
is_tag() va faire la même chose que pour is_search, sauf que c’est pour les tags :)
J’ai une “fatal error” en faisant çà. Il faut aussi modifier le add_action non ? Dsl je n’y connais pas grand chose…
tu as du avoir une fatal error car peut être as tu enlevé une parenthèse par inadvertance ?
Pourtant je fais bien gaffe aux parenthèses… Voila le message d’erreur que j’obtiens :
Fatal error: Cannot redeclare redirect_search_to_single_post_result() (previously declared in /homez.403/cheminverslefichier/functions.php:117) in /homez.403/cheminverslefichier/functions.php on line 136
Je précise juste que j’ai déjà l’astuce de cet article dans le fichier function.php… Du coup, l’ “action” doit être en double dans la base de données j’imagine
Cela veut dire que tu as mis deux fois la même fonction. Supprime tout ce que tu as ajouté, et rajoute ce code :
et oui, il faut que tu n’ai qu’une seule déclaration de la fonction.
En suivant ton dernier conseil, aucune des 2 ne fonctionnent… Du coup je vais me contenter de la fonction première de ton article ! merci pour ton aide
J’ai testé moi-même en ajoutant is_tag() avant de te proposer la solution, et cela fonctionne très bien. Si tu as une fatal error, c’est du à un conflit de doublon ou de parenthèse. Ce n’est pas bien grave, c’est juste dommage ^^, tant mieux si la première fonction te convient!
Un dernier espoir peut-être, essaye de remplacer tous les guillemets de mon code par tes propres guillemets. Il y a sûrement une erreur de formatage.
C’était effectivement les guillemets :D c’est parfait merci !
Fatal error: Cannot redeclare redirect_search_to_single_post_result() (previously declared in /homez.403/cheminverslefichier/functions.php:117) in /homez.403/cheminverslefichier/functions.php on line 136
Cette erreur signifie que vous avez ajouté deux fois la même fonction. En PHP, on ne peut pas appeler deux fonctions avec le même nom :)
En terme d’ergonomie c’est quand même – en l’état – une mauvaise idée : l’internaute n’a aucune idée de ce qu’il s’est passé entre sa saisie dans la recherche et son arrivée sur l’article… Serait-il possible d’ajouter un feedback pour l’utilisateur ( i.e. lui signaler qu’il a été redirigé car il n’y avait qu’un seul résultat, en ajoutant un sous-titre dans le contenu par exemple ) ?
Merci bien, c’est très utile
Bonjour et merci pour cet article,
Pour ma part je recherche la possibilité d’une redirection lors de la recherche vers l’article complet.
Je m’explique
exemple : sur google je tape “meg ryan”
j’arrive ici : http://www.wikilinks.fr/des-actrices-sans-dent/meg-ryan/
et je voudrai aller directement sur l’article complet CAD :
http://www.wikilinks.fr/des-actrices-sans-dent/
Cela est-il possible ?
Merci d’avance pour votre réponse
Bonjour :)
Merci pour cette astuce, c’est vraiment chouette en effet :)
Alexane