Publicité
En savoir plus
Ce module de recherche instantanée vous permet de rechechez en une seconde ce que vous avez besoin. L'ensemble des données du blog y sont répertoriés. De ce fait, vous trouverez les articles, dossiers, codes sources, découvertes et les professionnels du web de notre annuaire.
La fonction de recherche intégrée en natif dans WordPress permet à vos visiteurs de trouver facilement le contenu qu’ils souhaitent. Cependant, bien quelle soit basique et sans grande innovation certaine extension et bout de code permettront l’élaborer et d’affiner la fonction de recherche de votre blog WordPress. Nous pouvons par exemple citer l’excellente extension “Search Meter” qui vous permet tout simplement d’enregistrer les requêtes de recherches faites par vos visiteurs. Par la suite vous pouvez les afficher dans n’importe quelles pages via les fonctions données ou encore grâce aux composants d’interfaces (widget) disponible dans les options de votre thème WordPress (Apparence – Widgets)

Toutefois, nous souhaitons par exemple - et cela sans utiliser d’extension, car il n’en existe pas encore, fonctionnelle et légère – afficher et filtrer le contenu selon les conditionnels de bases proposé par les requêtes d’affiches des articles de WordPress. En clair, une simple requêtes dans l’adresse de votre blog (suivi de la requête) nous permet de filtrer le contenu de la recherche comme nous le voulons. Ces requêtes sont tout simplement celles utilisées par les développeurs de thèmes, par exemple “orderby” ou encore “order“.
Nous allons également voir comment faire pour une adresse de recherche plus jolie en utilisant une simple fonction de base. Cela transformera tout simplement l’adresse de type “?s=” par “/search/“. Cela reste quand même une fonctionnalité dont la nécessité reste à prouver, mais peut facilement satisfaire vos clients.
Si cette fonction vous intéresse, il vous suffit de coller le code suivant dans le fichier “functions.php” de votre blog thème WordPress. Cela appliquera automatiquement la redirection des recherches vers une bonne adresse.
function gksearch() {
if ( is_search() && strpos($_SERVER['REQUEST_URI'], '/search/') === false ) {
wp_redirect(get_bloginfo('home') . '/search/' . str_replace(' ', '+', str_replace('%20', '+', get_query_var('s'))));
exit();
}
}
Pour mettre ce système, rien de plus simple. Nous vous conseillons tout de même d’avoir une page “recherche” (search.php) personnalisé présent dans le dossier de votre thème WordPress. Nous allons utiliser la fonction de récupération de la requêtes de recherche pour permettre une personnalisation dynamique sans problème.
<?php echo wp_specialchars($s, 1); ?>
Le module sera toutefois inséré manuellement pour des questions techniques et ne pas arriver à compliquer un peu plus la chose. La mise en place de ce type de fonctionnalités est destiné à tout type de niveau, débutant ou professionnel. Voici la mise en place en HTML, contenant la fonction et l’adresse de récupération des données de recherche et de filtrage.
Les requêtes ci-dessous sont des exemples, mais vous pouvez aller beaucoup plus loin grâce aux nombreuses fonctionnalités d’ordres disponibles. En voici la liste. Concernant l’ordre (order) vous pouvez utiliser les valeurs “ASC” (croissant) ou “DESC” (décroissant) pour afficher l’ordre d’apparition des résultats.
<div id="subsearch"> <ul> <li> <a href="search/<?php echo wp_specialchars($s, 1); ?>?&orderby=comment_count"> Les plus commentés </a> </li> <li> <a href="search/<?php echo wp_specialchars($s, 1); ?>?&orderby=modified"> Modifications </a> </li> <li> <a href="search/<?php echo wp_specialchars($s, 1); ?>?&orderby=title&order=asc"> Par titre </a> </li> </ul> </div>
Nous avons maintenant un nouveau module pour filtrer les résultats de recherches de vos visiteurs. Ils pourront ainsi fouiller à leurs convenances et selon les types de filtres que vous avez sélectionnés. Toutefois, pour que le module fonctionne graphiquement, il faudra le stylisé avec votre feuille de style. Et voici un exemple, que vous devez modifier pour fondre le module dans votre charte graphique. Ce style est à insérer dans le fichier “style.css” de votre thème WordPress ou dans la feuille de style principale de votre blog.
#subsearch {
font-size: 12px;
height:33px;
width:624px;
}
#subsearch ul {
list-style:none outside none;
margin:0;
padding:0 5px;
}
#subsearch li {
float:left;
line-height:32px;
margin:0;
color:#6b958c;
}
#subsearch li a:hover {
background-color:#f0f5f6;
}
Pour finir, nous voulons maintenant inclure des types d’articles et pages à afficher lors de la requêtes de recherche du visiteur. Avec la nouvelle fonctionnalité des types de contenus (custom post types) présent dans WordPress 3.0, ils sont également intégrés aux moteurs de recherches interne de votre blog. Cela peut être embêtant selon l”utilisation de ces contenus. Pour y remédier nous allons tout simplement utiliser le fichier “functions.php” de votre thème WordPress en y intégrant une fonctionnalité de filtrage. Il est ainsi possible d’intégrer les articles et certain type de contenus. Ceux présents dans la fonction seront affichés.
function GkRecherche($query) {
if ($query->is_search) {
$query->set('post_type', array('post', 'decouvertes', 'annuaires'));
}
return $query;
}
add_filter('pre_get_posts','GkRecherche');
14 commentaires !
kReEsTaL says:
août 28, 2010
Ah super ! Merci pour ce tuto bien pratique pour améliorer cette fonctionnalité. :)
Crunch from PSP says:
août 28, 2010
Vraiment intéressant pour ceux qui ont laissé la fonction par défaut !
De plus, cette technique est mise en place ici d’après ce que j’ai vu et j’avoue que ça rend pas mal ;)
Li-An says:
août 28, 2010
Relevanssi. Voilà un bon plugin de recherche ! (mais ce n’est pas le sujet, je le reconnais bien volontiers).
Valentin says:
août 28, 2010
Merci pour la traduction aussi :)
Aurélien Denis says:
août 29, 2010
Salut !
Merci pour l’article qui fait suite à notre discussion sur Twitter.
Je suis en train de tester mais visiblement cela ne fonctionne pas… as-tu un endroit sur ton site où ce type de recherche s’applique ?
Merci ! :cool:
Valentin says:
août 29, 2010
Oui, dans le module de recherche tout simple :)
http://www.geekeries.fr/search/nettoyer
Aurélien Denis says:
août 29, 2010
Bon j’ai ajouté les lignes de code dans le functions.php (1ère commande) puis les liens de recherche (les plus commentés, etc.).
Problèmes : en cliquant dessus j’obtiens une erreur 404. C’est /search qui pose problème. En le supprimant cela ne fonctionne pas non plus.
Je me demande s’il n’existe pas un lien direct avec le fichier search.php et searchform.php. Dans mon cas, la plupart de mes sites utilisent Google pour la recherche interne…
Valentin says:
août 29, 2010
Faut-il encore que t’a fonction de recherche marche. Je ne propose qu’une solution d’améliorer cette recherche.
Pour le lien, essaye de renseigner l’adresse au complete. (http://www.geekeries.fr/search/etc...)
Si tu as bien la fonction de recherche interne de WordPress qui fonctionne ça devrait marcher !
Sinon essaye de créer un fichier “search.php” comme dit dans l’article. Tu peux t’aider du codex par exemple -> http://codex.wordpress.org/Creating_a_Search_Page
Et comme dit sur Twitter, le fonction de recherche ne marche pas sur ton blog :/
Aurélien Denis says:
août 29, 2010
@Valentin : OK merci !
Mais ce n’est pas pour mettre en place sur WordPress Channel mais bien sur un site où tout est configuré par défaut. ;)
Daniel, de SeoMix says:
oct 19, 2010
Très bon article sur la recherche sur WordPress.
Mais j’ai une petite question : peux t-on intégrer (et forcer) une recherche selon l’url où la personne se trouve ? C’est pour mes pages 404.
Par exemple, un utilisateur se trompe d’url, mais le contenu de la page affiche quand même une liste de résultats (via le moteur de recherche).
PS : j’ai eu trop de mal à comprendre les autres commentaires, jusqu’à ce que je voies qu’ils sont en ordre inverse…
Valentin says:
oct 19, 2010
Très bonne question, ça existe via des extensions, mais tu peux par exemple utiliser ce bout de code.
[code]
< ?php
$query = $_SERVER["REQUEST_URI"];
$preg = preg_replace("[/]","",$query);
?>
[/code]
Puis dans une nouvelle boucle tu appel “preg” comme champ de recherche.
Valentin says:
oct 19, 2010
Tu peux voir un exemple ici –> http://www.geekeries.fr/recherche
Valentin says:
oct 19, 2010
Va soir chez Pix-Geeks :) –> http://pix-geeks.com/webmasters/ameliorer-page-erreur-404-worpdress
Daniel says:
oct 19, 2010
Merci pour le code et le second lien, c’est exactement ce dont j’avais besoin.
Qu'est-ce que vous en pensez ? :)