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.

[php]
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();
}
}
[/php]

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]

[/php]

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

[php]

14 réponses

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

  2. 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:

      1. 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…

        1. 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. (https://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 :/

  3. 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…

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *