Tout d'abord, insérez ces trois ...

En savoir plus

Publicité

En savoir plus
La fonction “Recherche” de votre installation WordPress !

La fonction “Recherche” de votre installation WordPress !

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)

La fonction "Recherche" de votre installation WordPress !

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.

Modifier l’adresse de recherche

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();
    }
}

Les options de filtrages

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.

  • orderby=author
  • orderby=date
  • orderby=title
  • orderby=modified
  • orderby=meta_value
  • orderby=meta_value_num

  • orderby=menu_order
  • orderby=parent
  • orderby=ID
  • orderby=rand
  • orderby=comment_count
  • orderby=none

<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>

L’affichage et le style

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;
}

Gérer le contenu des résultats à afficher

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');
Ajouter un commentaire

14 commentaires !

  1. kReEsTaL says:

    août 28, 2010

    Répondre

    Ah super ! Merci pour ce tuto bien pratique pour améliorer cette fonctionnalité. :)

  2. Crunch from PSP says:

    août 28, 2010

    Répondre

    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 ;)

  3. Li-An says:

    août 28, 2010

    Répondre

    Relevanssi. Voilà un bon plugin de recherche ! (mais ce n’est pas le sujet, je le reconnais bien volontiers).

  4. Aurélien Denis says:

    août 29, 2010

    Répondre

    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

      Répondre

      Oui, dans le module de recherche tout simple :)
      http://www.geekeries.fr/search/nettoyer

      • Aurélien Denis says:

        août 29, 2010

        Répondre

        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 :/

  5. Aurélien Denis says:

    août 29, 2010

    Répondre

    @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. ;)

  6. Daniel, de SeoMix says:

    oct 19, 2010

    Répondre

    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…

Qu'est-ce que vous en pensez ? :)

Nom obligatoire

Site

♥ Ici, on utilise KeywordLuv. Entrez YourName@YourKeywords dans le formulaire "Nom" pour bénéficier des avantages SEO d'un mot-clef ciblé. Devenez membre et connectez-vous pour partager des fichiers via les commentaires !

Votre Newsletter WordPress !