WP-Advanced-Search : moteur de recherche avancé pour WordPress

Mathieu Chartier CMS (WordPress...) 154 commentaires

J'ai écrit il y a peu un article concernant un moteur de recherche en PHP Objet (POO) très complet permettant de faire de multiples tâches en une, voilà son adaptation totale pour WordPress. Pour ceux qui aurait raté le premier article, voici en résumé ce que permet le moteur de recherche :

  • Trois types de recherche ("LIKE", "REGEXP" et le meilleur choix : "FULLTEXT") avec possibilité de créer les index FULLTEXT si nécessaire ;
  • Mise en surbrillance des mots-clés recherchés de manière précise ou approchante ;
  • Possibilité de rechercher des expressions exactes comme sur Google en utilisant les guillemets (exemple : "moteur de recherche" google pour chercher à la fois moteur de recherche et le mot Google) ;
  • Possibilité de gérer des corrections automatiques (depuis la version 3.0) avec un index dédié de mots et expressions ;
  • Autocomplétion des recherches avec un index dédié également ;
  • Possibilité d'ordonner les résultats de recherche à notre guise en fonction de la table choisie ;
  • Ajout possible d'un algorithme de pertinence (simple) pour classer les résultats selon le nombre de correspondance entre les mots de la requête et ceux trouvés dans les résultats ;
  • Trois type de paginations adaptées et modulables avec styles CSS associés (ou non) ;
  • Choix de l'encodage des caractères possibles ;
  • Possibilité de sélectionner la ou les catégorie(s) de recherche pour les articles ;
  • Possibilité d'exclure des "stop words" ou des mots d'une certaine taille.

Configuration Advanced Search WordPress - moteur de recherche (extension)

Trêve de bavardage, les impatients doivent déjà vouloir télécharger l'extension WP-Advanced-Search... Me trompe-je ? Que ce soit vrai ou non, sachez que le plugin peut être installé directement dans WordPress ou que WP-Advanced-Search est téléchargeable via la plate-forme des plugins WordPress. Sinon, vous pouvez toujours récupérer l'archive de l'extension ici-même :

Télécharger “WP-Advanced-Search 3.3.8”wp-advanced-search.zip – Téléchargé 21601 fois – 2,79 Mo

L'extension WP-Advanced-Search pour WordPress

J'ai ajouté à l'extension WP-Advanced-Search quelques spécificités propres à WordPress bien entendu pour que l'ensemble soit cohérent, notamment la possibilité d'afficher plusieurs éléments de son choix :

  • le titre de l'article (cliquable et pointant vers l'article) ;
  • la date de publication (dont le formatage est modifiable) ;
  • le nom de l'auteur ;
  • la catégorie de l'article ou la page ;
  • l'article complet ou l'extrait ;
  • l'image à la Une des articles ou pages ;
  • le numéro du résultat pour s'y retrouver si nécessaire.

Depuis la version 1.5 de l'extension de moteur de recherche WordPress, il est possible de modifier l'ordre d'affichage de quelques éléments comme la date, le nom de l'auteur et la catégorie de l'article. Plusieurs thèmes ont également été ajoutés (et d'autres viendront sûrement à l'avenir) pour donner quelques styles CSS de base, mais vous pouvez à tout moment personnaliser l'ensemble.
La version 1.6 du moteur de recherche WordPress corrige un ancien problème avec la mise en gras des mots clés recherchés...
La version 2.0 marque une nouveauté intéressante puisqu'il est désormais possible de procéder à des recherches spécifiques à des catégories d'articles !
Les version 2.1 puis 2.3 ont vu l'apparition d'un système d'autocomplétion (autogénéré ou non) mais aussi l'ajout d'un "trigger" (clic) ou d'un scroll infini pour afficher la suite des résultats comme alternative à la pagination originale.
La version 3.0 marque une avancée majeure avec la correction de mini-bugs mais surtout la mise en place d'un système de correction orthographique automatique.
La version 3.2 ouvre le moteur de recherche à WordPress MU (multisites) et reçoit de nouvelles fonctions pour exporter et importer les paramètres du plugin (pour éviter d'éventuelles pertes de paramétrages...).

Un problème de "sécurité" a également été corrigé depuis la version 1.8 afin que les petits malins qui joueraient avec le paramètre "page" des URL soient automatiquement rediriger vers la première page de résultats (ou vers la page d'erreur associée si aucun résultat n'existe).

J'ai également ajouté un système de traduction pour que chacun puisse modifier les textes français ou anglais avec POEdit mais aussi créer d'autres langues que j'ai préférées éviter d'écorcher. ^^

Installation de WP-Advanced-Search

Deux étapes sont nécessaire pour que l'ensemble du moteur de recherche fonctionne : d'une part il faut installer et activer l'extension, et d'autre part il convient de modifier quelque peu le fichier search.php de votre thème WordPress.

Le fichier search.php (pour l'affichage des recherches internes) contient en théorie la "boucle" ("the loop") de WordPress et toutes les informations pour afficher les résultats plus ou moins proprement. J'ai voulu vous éviter cette lourdeur de code bien que cela limite vos "libertés" d'affichage. WP-Advanced-Search ne demande qu'une simple ligne de code...

Dans l'ordre, il faut :

  • Supprimer la boucle et tout ce qui s'en suit (quelque comme "while(have_posts())" jusqu'à "endwhile;" en général) ;
  • Recopier le code <?php WP_Advanced_Search(); ?> dans le bloc qui va accueillir les résultats (sûrement une "div"). C'est aussi simple que ça, cette fonction contient tout ce qui est utile pour afficher les résultats.

L'extension WP-Advanced-Search suit les traces du moteur de recherche PHP qui me tient à coeur, il est donc probable que des versions suivent à l'avenir si le temps me le permet. Je ne vous cache pas que j'ai voulu créer cette extension dès lors que j'ai remarqué des "bugs" dans le moteur de recherche natif de WordPress, je me suis empressé de le remplacer par mon extension et depuis, tout fonctionne à merveille, vous pouvez tester WP-Advanced-Search en faisant une recherche sur ce blog...

WP Advanced Search - moteur de recherche avancé WordPress

154 commentaires

  • Zarc dit :

    Bonjour

    Tout d'abord merci de mettre à disposition votre travail.
    Je me permet 2 réflexions :

    1. Il est impossible de mémoriser les options choisie à partir des réglages de WP-Advanced-Search : on selectionne les choix, mais ils ne sont pas pris en compte et ceci quelque soit le champs choisi. J'ai essayé avec firefox récent, mac et pc, mais aussi avec IE 8 sous XP, sur des ordi différents. Donc que faire ?
    Le thème que j'utilise est bitlumen par http://shinraholdings.com/
    C'est un thème de travail, et non un thème définitif

    2. J'utilise tablepress, http://wordpress.org/plugins/tablepress/ que vous connaissez peut être et qui permet de construire des tableaux, etc. A l'intérieur de chaque tableau, la fonction rechercher prévue par tablepress marche d'ailleurs diaboliquement bien.
    Ma question est la suivante : comment faire pour que votre fonction de recherche aille aussi chercher dans le contenu des tables de Tablepress ?

    Cordialement

    • Bonjour,
      Je vous avoue que je ne comprends pas votre premier point... :S
      Plusieurs de mes sites utilisent l'extension WP-Advanced-Search et aucun n'a de problème de "mémorisation des options", tous conservent parfaitement les choix et réglages effectués. Peut-être avez-vous connu la première version dont la mise à jour a connu quelques soucis la première fois, mais depuis, tout est rentré dans l'ordre et vous ne devriez pas avoir ce genre de problèmes.

      Concernant le 2e point, sachez que dans sa version actuelle, le moteur "s'attaque" à la table de votre choix de votre installation WordPress, cela peut donc être tablepress si vous la sélectionnez (première option de réglages pour l'anecdote), mais dans ce cas, cela ne cherchera que dans TablePress. Actuellement, le moteur ne permet de chercher que dans une table (ce que font 95% des moteurs existants que vous trouverez sur le web) mais dans plusieurs colonnes d'une table en revanche.

      Je réfléchis à 2 pistes d'évolution mais le moteur est déjà très puissant et complexe, il ne faut donc pas que cela devienne trop gourmand en ressources... La première idée serait de rechercher sur diverses tables, cela me semble possible mais il me faut du temps pour cela. En second point, j'aimerais également permettre au moteur d'aller récupérer des informations dans plusieurs champs distincts (recherche multicritères) mais pour avoir commencer à coder cela manuellement à l'origine, c'est relativement complexe car mon moteur utilise trois technologies de recherche différentes, donc trois méthodes de lecture des champs en quelque sorte...

      En tout cas, je prends vos remarques en compte. :D

  • Zarc dit :

    Rien n'y fait !
    J'ai désinstallé votre extensions puis réinstallée propre (car en effet je l'avais dans le coin de l'oeil avant les toutes dernières mises à jour).

    J'ai repris sur un autre ordi, un mac pour le détail, j'ai désactivé toutes les extensions et réactivé la nouvelle et dernière version de WP-Advanced-Search. Dans cet environnement j'ai envoyé chrome, firefox et safari dernières versions... Last but not least, les choix faits dans les réglages n'ont aucune persistance.
    Je dois faire une erreur systémique quelque part, mais je ne vois pas ou.
    Ma ma page search est réduite à sa plus simple expression :

    Sur le plan méthodo, je choisi par exemple une css en pagination, red pour bien la voir. Ensuite pour valider j'ai fait 2 gestes :
    - retourner direct sur le site pour tester
    - rafraichir par la barre d'adresse du navigateur
    Dans les 2 cas je perd les choix.

    Est qu'un bon vieux "bouton" save" ou style genre ne serait pas une idée ?
    Car il est vrai que là, on ne sait exactement quoi faire pour valider les choix. On change de ligne en menu d'option sans rien valider et ensuite qd on a fini, on quitte la page de réglage.. toujours sans rien valider.

    • Bonjour !
      Il y a un bouton "Enregistrer" dans chaque page d'extension (en bas de page à gauche)... Une fois que vous cliquez dessus, les informations programmées sont enregistrées dans une table de base de données, donc les informations sont nécessairement "enregistrées" quelque part, mais bien entendu, il faut appuyer sur le bouton enregistrer, il ne suffit pas de sélectionner les options sans rien faire... Je crois que votre problème est donc là.

  • Zarc dit :

    bonjour
    ... en effet, je suis au courant

    Sf qu'il n'y a pas de bouton "enregistrer", justement
    Sur aucune config de navigateur testée
    Ces boutons sont bien entendu présents sur toutes mes autres extensions
    Je crois donc que mon problème devient le vôtre aussi..

    • Bonjour,
      Je pense que vous faites fausse route, il ne s'agit pas d'un problème de navigateur ou autre ici, il s'agit juste de comprendre pourquoi VOUS, vous n'avez pas de bouton "Enregistrer" dans chaque page de mon extension (alors que mon formulaire contient bien un bouton "submit") et pourquoi toutes les autres personnes ont bien ce bouton... :S
      Si vous avez l'occasion, envoyez-moi une ou plusieurs captures d'écran complet de vos pages de réglages dans l'extension via email car il n'y a vraiment aucune raison que le bouton "Enregistrer" n'existe pas chez vous (sauf si vous avez mis un display:none en CSS qui pourrait faire conflit). Je ne suis pas certain que le problème soit dans l'extension à 100% là... :(

  • Zarc dit :

    Bonjour

    Suite à votre réponse, j'ai cherché et trouvé le submit dans le source de la page OPTIONS GÉNÉRALES DU MOTEUR par exemple.

    /div>

    </form

    Je vais chercher qq part dans les css ce display:none
    .... :-)

    • Ah, je suis rassuré, je commençais à croire que j'étais fou ! :D
      Le submit est donc bien là, mais "caché". Si le submit est caché, il y a forcément quelque chose qui entraîne ça, cela peut être un display:none, un visibility:hidden, un hide() en jQuery ou encore des fonctions telles que htmlspecialchars ou htmlentities en PHP qui pourraient "modifier" les balises. Maintenant, je vous avoue que le premier choix me semble le plus logique car tout le reste s'affiche, donc ça semble être davantage un problème de CSS qu'autre chose.

  • Zarc dit :

    Bah la folie est féconde !
    Finalement j'ai pris qqs modèles sur le net et boum, le joli bouton "Enregistrer" est réapparu, comme pour les copains.
    Ce qui me chiffonne c"est comment trouver la css coupable. Le display:none est qq part dans un réglage que j'ai du faire pour votre extension, puisque les autres extensions ont chacune leur "save".
    Enfin pour l'usage du moteur je le règle à partir d'un autre template pour revenir sur le mien. Je trouverai bien un jour pour le hic.
    En tout cas merci pour ce gagesque échange vous en conviendrez.

    • De rien, l'essentiel est d'avoir déjà trouvé une amorce de réponse, il ne reste qu'à trouver la solution en CSS pour que le bouton soit présent avec votre thème classique. Le problème peut venir du côté de l'admin avec une CSS modifiée ou du côté de votre thème... Bon courage en tout cas !

  • Afif dit :

    Bonjour,
    j'utilise cette extension actuellement sur un site mais j'ai un petit problème. L'option afficher un extrait ne marche pas pour moi. Je peut sois afficher l'article complet soit le titre. D'où peut provenir l'erreur ?
    Merci

    • Bonjour (et bonne année !),
      Je vous avoue que je ne sais pas trop quel pourrait être le problème, sauf si vous n'avez rempli aucun extrait dans vos contenus. En effet, l'extension se base sur the_excerpt() (donc l'extrait au sens propre) et non the_content(), c'est-à-dire la balise MORE par exemple.
      Avez-vous la dernière version de l'extension ?

  • Afif dit :

    (bonne année ;) )
    Oui j'ai bien la dernière extension. Le problème peut-il provenir du fait que j'ai uniquement des pages et pas des posts ?

    Merci pour votre réponse.

  • Afif dit :

    et si j'ajoute manuellement le champ "post_excerpt" pour mes pages directement dans la base de données est ce qu'il sera pris en considération ? cela aurai-t-il des répercussion négative vu que normalement une page ne peut pas avoir un extrait ?

    • Oui ça peut marcher je pense... Je vous conseille dans ce cas d'utiliser une autre de mes extensions : Excerpt Generator. Elle génère automatiquement des extraits à partir des textes actuels des pages comme bon vous semble, et cela fonctionne pour les pages aussi, donc profitez en, vous gagnerez du temps !

  • Afif dit :

    ok merci bien, je vais voir cette extension.

    Je vous félicite pour tout ce que vous faites et bonne continuation ;)

  • Cécile dit :

    Bonjour,

    merci de mettre à disposition le fruit de votre travail !

    je cherche un moteur de recherche dont je pourrais restreindre à l'envi la recherche à 1 ou plusieurs catégories, qu'il ne cherche donc pas partout dans le site mais là où je lyui dis de chercher.
    Votre petit bijou fait-il cela ? Ou bien envisagez-vous d'ajouter une option de ce type si ce n'est pas le cas ?

    en vous remerciant pour votre retour.

    cécile

    • Bonjour,
      Mon moteur d'origine ne propose pas cette option mais pour tout vous dire, j'ai dû créer un système comme vous le cherchez récemment pour un client, et cela fonctionne, il faut que je vois comment l'adapter au besoin à l'extension, et là, c'est une autre paire de manche, mais cela est dans mes plans ! :D

  • Cécile dit :

    Merci pour votre réponse rapide Mathieu. je reviendrai chez vous régulièrement voir si vous avez pu ajouter cette fonction.

    Bonne soirée

  • henri dit :

    Bonsoir,
    J'ai installé le plugin wp advance search.
    Auriez-vous un exemple pour visualiser le moteur de recherche (une page web avec le plugin dessus..) ?
    Cdt

  • ultime dit :

    Bonjour et felicitation pour le plugin.
    Le plugin fonctionne sur mon site en revanche je n'arrive pas a creer un formulaire de recherche complet.
    En effet sur mon site il n'y a que le widget recherche d'un mot dans la colonne de droite, et quand j'effectue une recherche elle s'effectue bien avec le plugin.
    Ce que je voudrai c'est un formulaire plus complet de recherche, ou on pourrait choisir un/des mots cles, des categories dans lesquelles rechercher ainsi que la date de parution du poste ( sur une periode ou un jour fixe)
    J'ai creer une searchpage.php j'y ai mis quelques trucs mais rien n'a fonctionner...
    Une solution svp?
    Merci

    • Bonjour,
      Merci pour le compliment. Je profite de cette réponse pour indiquer je suis en train d'ajouter un système d'autocomplétion (comme sur Google) dans le plugin, ça sortira bientôt... :D

      Concernant votre problème, j'avoue que tout n'est pas possible par défaut avec mon plugin, je reprends point par point :
      - le plugin effectue une recherche à partir d'un seul champ de recherche (donc celui de base de WordPress en gros), pas une recherche multi-champs
      - le plugin autorise la recherche uniquement dans des catégories d'articles (il faut le paramétrer dans les options en sélectionnant "articles" puis la ou les catégories)
      - le plugin ne permet pas à ce jour de recherche sur une période ou à partir d'une date donnée, je note toutefois pour l'avenir si l'idée me prend... ^^

      En revanche, je n'ai pas compris ce que vous voulez dire quand vous parlez de choisis un/des mots clés, que voulez-vous dire ? Le moteur effectue la recherche pour la totalité des mots tapés (si plusieurs mots, tous doivent être dans le résultat recherché) ou pour les expressions clés mises entre guillemets, que voulez-vous exactement ?

  • ultime dit :

    Bonjour et merci pour votre reponse rapide.

    Genial pour l'autocompletion, j'avais justement fait quelques recherches en vain dans les extensions, je n'ai trouve que de l'autocompletion woocommerce, je reste donc a l'affut de votre prochain update..

    Je n'ai pas d'idees precises quand a "des" mots cles, a vrai dire ce serait surtout un mot cle effectivement, ne tenez pas compte de cette info.

  • Bonjour,
    Je vous remercie pour cet excellent article très complet. Je me suis empressée de le tester et il est vrai que c'est simple et que ça donne de bons résultats mieux affichés en prime que ceux du moteur natif qui renvoyait n'importe quel résultat. Je souhaiterais en page d'accueil de mon site IDEOZ Voyage : voyages.ideoz.fr intégrer un moteur de recherche, mais pas seulement en widget. Plutôt au coeur de la page d'accueil sur le modèle de cette page : evaneos.com (certes pas sous wordpress). Je me demandais si c'était possible, car pour l'heure, le moteur est accessible par mon widget et cela ne me satisfait pas tout à fait pour améliorer les taux de recherche trop faibles alors que les visiteurs sont perdus. Merci pour vos conseils ou votre retour.

    • Bonjour,
      Oui c'est tout à fait possible qu'il soit intégré ailleurs. Le widget n'est qu'un outil proposé par WordPress mais vous pouvez intégrer un formulaire de recherche n'importe où. En général, il est contenu dans un fichier de thème appelé searchform.php et peut être appelé n'importe où avec .

  • ReaperWp dit :

    Bonjour,
    J'essaie d'inclure la barre de recherche du plugin dans mes pages web (préférablement dans les widgets) mais je n'arrive pas à la mettre quelque part dans le site web. Apparemment, il faut modifier une ligne de code dans le fichier "Search.php", mais ce fichier n'existe pas parmi les fichiers de mon thème. J'ai seulement le fichier "searchform.php" et rien qui ressemble à ce qui devrait être dans le fichier "Search.php".

    Dans le fichier "searchform.php", c'est écrit:

    <form method="get" id="searchform" class="searchform" action="" role="search">

    <input type="search" class="field" name="s" value="" id="s" placeholder="" />
    <input type="submit" class="submit" id="searchsubmit" value="" />

    • Bonjour,
      En effet, il arrive (selon le thème utilisé) que le code du moteur de recherche de WordPress ne soit pas dans un fichier search.php. Dans votre thème, je suppose qu'il est directement intégré dans le fichier index.php (car le fichier renvoie vers les résultats du blog ou de recherche en fonction de l'usage), c'est parfois le cas et en testant, ça me semble être le cas pour votre site.

  • Rama dit :

    Bonjour, et merci pour votre super travail !
    Pour la possibilité d'afficher le moteur de recherche ou l'on veux, ne serait-il pas possible de rajouter un Shortcode qui pourras appeler le formulaire de recherche ou l'on veux ?
    Cela pourrait "je pense" faciliter la vie à des personnes pas très familier avec le code, mais surtout permet aussi d'autre perspective.

    • Bonjour et merci pour l'idée.
      C'est vrai que je n'ai pas souhaité développer de shortcode pour ce moteur car le système est différent, il s'appuie sur un formulaire indépendant du moteur (soit celui de WordPress, soit un formulaire créé par l'utilisateur). Ma fonction ne vient là que pour installer la technologie de recherche et pour afficher les résultats. Cela se réfléchit... :D

  • Christophe dit :

    Bonjour,
    extension géniale
    Est il possible d'avoir les termes rechercher en surbrillance plutôt qu'en gras ?
    Merci d'avance

    • Bonjour,
      Ce n'est pas prévu pour la surbrillance mais vous pouvez tout à fait le faire en CSS. Les balises sont des "b" en HTML (et non des strong ici pour des raisons techniques). Il suffit de dire aux balises "" d'être dans une couleur en particulier, etc. :D
      Merci pour le compliment en tout cas.

  • Arnaud dit :

    Bonjour Mathieu,
    tout d'abord je souhaite vous présenter mes félicitions pour ce plugin qui est vraiment utile. Votre façon de programmer est très fluide et facile à comprendre.
    Cependant, j'ai un souci avec la recherche. Je sélectionne dans les options une table sql perso ainsi que les champs à explorer. Pour faire simple je cherche dans les colonnes 'nom' et 'description' de ma table 'objets'. J'ai rempli la table avec plusieurs entrées, toutes avec un id unique.
    Lorsque j'effectue la recherche il ne trouve aucun résultat...
    Auriez-vous une piste à explorer ?
    Merci :)

    • Bonjour,
      Merci pour le compliment, j'essaie de coder bien mais avec du recul, j'aurais pu et dû mieux programmer en orienté objet, je m'en veux un peu et je ne dis pas qu'un jour, ce code sera "nettoyé". :D

      Concernant votre problème, cela peut dépendre de la version du moteur que vous utilisez déjà. Quel "pack" avez-vous téléchargé ? Il arrive parfois qu'un simple paramètre fasse tout planter, ça reste intolérant quand c'est mal luné... :D
      Votre recherche me paraît tout à fait normale et cohérente donc le moteur devrait faire ça sans trop de problème. Le mieux serait peut-être de repartir d'un des exemples que je fournis dans mes codes et de modifier petit-à-petit les paramètres pour voir là où ça plante. Je ne peux guère vous aider plus à ce stade. :(

  • Arnaud dit :

    Merci de votre réactivité.
    J'utilise la version 2.6 que j'ai téléchargée depuis cette page.
    Ce qui me rend dingue c'est que la recherche marche parfaitement pour la table post de worpdress mais pas avec une autre...
    J'ai repris votre code pour l'intégrer dans mon thème du coup je l'ai analysé dans tous les sens et je ne vois pas d'où cela pourrai venir...
    Si vous avez des idées, je suis preneur ;)

    • En effet, c'est très étonnant. Sur les quelques tests quasi similaires que j'avais effectués, je n'avais pas eu ce problème (c'est d'ailleurs pour cette raison que j'ai gardé la possibilité de choisir une table différente).
      Dans les colonnes, vous devez donc avoir "nom, description" en théorie une fois le choix de votre table "objets" effectué. Vérifiez s'il n'y a pas un problème sur le choix de la colonne de classement également, ça pourrait peut-être faire planter le truc... (au pire, il faut enregistrer et recharger la page, ça arrive que ça plante sur certains navigateurs).

  • Arnaud dit :

    J'ai enfin trouvé...
    L'erreur venait du fait que le plugin est programmé pour la table post par défaut.
    Voici une partie du morceau de code qui me posait problème (WP-Advanced-Search-Function.php) :

    if(!in_array('toutes', unserialize($select->categories)) && $select->categories != 'a:0:{}' && $select->postType == "post") {
    $conditions = "as WPP INNER JOIN $wpdb->term_relationships as TR INNER JOIN $wpdb->terms as TT WHERE WPP.ID = TR.object_id AND TT.term_id = TR.term_taxonomy_id AND (";
    $nbCat = 0;
    foreach(unserialize($select->categories) as $cate) {
    $conditions .= "TT.slug = '".$cate."'";
    if($nbCat categories)) -1)) {
    $conditions .= " OR ";
    }
    $nbCat++;
    }
    $conditions .= ") AND";
    } else {
    $conditions = '';
    }*/

    // Récupération du type de contenu à afficher
    /*if($select->postType == "post") {
    $wpAdaptation = "AND post_type = 'post' AND post_status = 'publish'";
    } else if($select->postType == "page") {
    $wpAdaptation = "AND post_type = 'page' AND post_status = 'publish'";
    } else if($select->postType == "pagepost") {
    $wpAdaptation = "AND (post_type = 'page' OR post_type = 'post') AND post_status = 'publish'";
    } else {
    $wpAdaptation = "AND post_status = 'publish'";
    }

    J'ai du le réadapter à mes besoins en changeant les options disponible et ainsi donc la valeur de la variable $wpAdaptation.
    Suite à quoi j'ai du changer le champ 'id' de ma table perso en 'ID' du fait de tous les : "AlgoOK,'algo','DESC','ID'"

  • Arnaud dit :

    Je pense que le plus simple comme parade provisoire serait d'appeler une page ou fonction différente selon si le plugin est fait pour rechercher dans une table personnalisée ou dans la table post.
    Pour régler de façon permanente ce souci ce serai une possibilité d'ajouter une option qui permette de sélectionner la table que l'on veut pour les catégories ainsi que pour les utilisateurs. Une autre idée (plus superficielle et optionnelle) : ajouter une gestion des .tpl pour l'affichage des résultats; l'utilisateur pourrai ainsi créer des possibilités infinies de templates personnels.

    En tout cas j'aime beaucoup votre plugin, vous m'avez beaucoup avancé dans mon travail. Je comptais en codé un dans le même style car je ne trouvais pas de scripts aussi évolués; donc d'être tombé sur le votre a été un vrai bonheur.

    • Dans les évolutions, je ne pense pas mettre en place des .tpl mais plutôt un système de fichier CSS éditables en ligne ou un truc dans le genre, mais je manque de temps pour le faire en ce moment...
      Concernant le bug, il faudrait un "if else" en gros pour conditionner le fait que ce soit la table post ou une autre, je pense faire ça "vite" dès que j'ai quelques heures devant moi. :D

      Il y a toujours des améliorations et c'est ça le plaisir justement ! ^^

  • Arnaud dit :

    Bonjour Mathieu,
    je reviens vers vous car je n'arrive pas à résoudre un problème :
    lorsque j'ajoute des conditions d'affichage personnalisées dans la variable $wpAdaptation cela ne marche pas. La requête affiche des résultats ne prenant pas compte les conditions. J'ai essayé de passer par la variable $conditions également mais rien n'y fait. Auriez-vous une solution ? Peut-être modifier directement la fonction "moteurRequetes" ?
    Merci d'avance ;)

    • Bonjour,
      Vous êtes effectivement dans un cas très particulier. $wpAdaptation a été conçu uniquement pour la version WordPress (d'où le nom de la variable) du moteur de recherche. En gros, elle permet d'ajouter des informations supplémentaires pour n'afficher que les résultats publiés. Dans votre cas, comme vous voulez "adapter" cette partie à vos besoins, il faut effectivement réécrire la variable.
      Essayez de commenter toutes ces lignes là et de récréer une variable $wpAdaptation vide ou selon vos besoins (à mon avis, le vide serait le mieux pour commencer le test). Avez-vous testé ?
      La variable $conditions est aussi dans cet esprit, vous pouvez donc faire de même pour voir le résultat.
      Malheureusement, je ne peux pas en dire plus car normalement, ces deux paramètres optionnels ne posent pas de problème s'ils sont ignorés... :(
      Vous avez une erreur particulière d'écrite ?

  • Arnaud dit :

    Bonjour Mathieu,
    je reviens vers vous par rapport aux conditions personnalisées dans la requête.
    Je viens de me replonger dans votre code après une pause de plusieurs jours et j'ai trouvé une solution rapide et efficace à mon problème : il suffit d'ajouter une variable à la fonction moteurRequetes (de la classe moteurRecherche) et de l'intégrer à la variable de condition.
    exemple pour ceux que ça intéresse :
    public function moteurRequetes($colonnesWhere = array(), $ConditionsWhereExtra) {
    ....
    $this->condition = $query.$ConditionsWhereExtra;
    }
    Ceci marche aussi bien sous wordpress que sur le script original.

    • Merci, c'est super ça !
      Je regarderai ça en détail, j'ai déjà changé quelques détails dans la dernière version du plugin pour sauver les meubles mais ça pourrait être mieux avec votre idée ! :D

  • emilie dit :

    bonjour,

    est-ce que cette extension permet de faire une recherche multicritères ?

    • Bonjour,
      Non elle n'est pas prévue pour ça, son but est de remplacer le moteur classique de WordPress avec des fonctions plus avancées et plus précises de recherche. La recherche multi-critère serait plus complexe à prévoir car chaque cas serait différent selon le site utilisé... :(

  • Angélo MELLIN dit :

    Bonjour,

    Tout d'abord félicitation pour cette extension qui est très complète.
    J'ai le même soucis qu'une des personnes qui a postée il y a quelques temps : je n'ai pas le bouton "enregistrer", donc impossible de mémoriser les différentes options. J'ai lu les messages sur ce sujet et il semble que cela provienne d'un "display = none" quelque part dans les css ... pas évident de trouver ou chercher ! Auriez-vous une idée ? la personne qui avait ce problème l'avait résolu en installant d'autres modules mais je ne sais pas lesquels !
    En espérant que vous ayez une piste ^^
    Merci

    • Bonjour,
      En fait ce n'est aucunement un problème de mon module en particulier (contrairement à ce que ça peut laisser croire). Ce bug de WordPress arrive également avec le bouton "Ajout de médias" et autres, ce n'est pas propre à un module. En général, il s'agit de conflits de modules ou de "codes". Le mieux est de désactiver les modules un par un pour voir s'il revient ou non, afin de déterminer avec quels outils il fait conflit.
      Selon moi, vous devez utiliser une extension qui masque le bouton enregistrer avec Javascript et comme le code est appliqué côté admin, ça s'applique aussi dans mon plugin. Comme j'utilise le bouton-type de WordPress, ça doit être ça.

  • Angélo MELLIN dit :

    Bonjour,

    Pour résoudre ce problème il suffit de modifier 4 fichiers en déplaçant le bouton de validation du bloc div.clear dans un nouveau p.tr par exemple.
    Les emplacements sont les suivants :
    wp-advanced-search\WP-Advanced-Search-Autocompletion.php : 96
    wp-advanced-search\WP-Advanced-Search-Options.php : 325
    wp-advanced-search\WP-Advanced-Search-Pagination.php : 115
    wp-advanced-search\WP-Advanced-Search-Styles.php : 131

    Voici un exemple de ma modification pour le dernier (ligne :
    Avant (ligne 128 à 132) :

    <input type="submit" name="wp_advanced_search_action" class="button-primary" value="" />

    Après :

    <input type="submit" name="wp_advanced_search_action" class="button-primary" value="" />

    En espérant que celà serve à d'autres.
    @+

  • Angélo MELLIN dit :

    Le formulaire n'a pas voulu du code copié directement, voici un pastebin pour les lignes en question : http://pastebin.com/3dpVC37H

    • Merci, super. J'essaierai de modifier ça prochainement pour éviter le bug à d'autres. J'avoue être surpris du bug car je ne l'ai jamais rencontré mais si ça solutionne, ça me va ! :D

  • Thibaud dit :

    Bonour,
    Avant tout, merci :)
    Moi je recherche un plugin qui me permettrait de faire une recherche multicritère, mais dans une base externe. Pas dans les pages ou les posts, mais bien dans une base externe au site WP. Une idée ?

    • Bonjour. Sincèrement pas que je sache car il est rare de développer un plugin pour autre chose que WordPress (puisqu'il s'agit d'une autre base). En revanche, vous pouvez le "coder" à la main, j'ai l'équivalent de mon plugin en PHP sur ce blog par exemple...

  • Alidera dit :

    Bonjour,je voudrais une page de recherche comme dans le site http://www.parl.gc.ca/parliamentarians/fr/members.Est ce que c'est possible de le faire avec le plugin Wp-Advanced search? merci d'avance pour votre aide et suggestion

    • Bonjour,
      Peut-être que mon plugin ne sera pas le plus "adapté" car il a des bridages propres à WordPress mais la version PHP objet du moteur de recherche (qui se trouve sur mon blog) pourrait parfaitement faire ça. En gros, le plugin peut le faire mais ça demandera vraiment des réglages parfaits voire quelques modifications du code pour l'adapter (si on veut reproduire le même exemple que dans celui que vous m'avez cité).

  • zebulong dit :

    bonjour Mathieu,
    mon thème WP ne comporte ni search-form.php ni search.php. que dois-je faire pour installer la fonction de ton moteur "" ?

    • Bonjour,
      C'est la joie des thèmes construits sur un autre modèle que celui d'origine de WordPress, mais ce n'est pas bien grave, cela signifie que l'appel du search-form.php est remplacé par la fonction native get_searchform(); en PHP. Il faudrait chercher cette fonction pour trouver le formulaire de recherche.
      Pour ce qui est du search.php, il n'est pas obligatoire, il arrive parfois que le fichier index.php (voire les content-XXX.php) gèrent l'affichage des résultats. Le plus simple est de chercher les zones qui contiennent un code comme if (is_search()) { ... }. C'est là dedans que risque de se trouver la section à modifier.

  • Céline B dit :

    Bonjour,

    J'ai utilisé votre plugin, qui me semble très complet, sur mon site.
    Par contre il ne référence pas les textes contenus dans le module Accordéons utilisé pour cette page : http://arbreshaiespaysagesdaveyron.fr/test/accueil-2/flore-locale

    Je suis allée voir la base mysql et les infos s'enregistrent bien dans _posts, post_title, post_content.
    E accessoirement l'excdrpt ne s'affiche pas : http://arbreshaiespaysagesdaveyron.fr/test/?s=haies&searchsubmit.x=0&searchsubmit.y=0

    Un grand merci d'avance.

    • Bonjour,
      Pour ce qui est de l'extrait, il faut se rendre dans "thèmes et styles" d'Advanced Search pour pouvoir afficher ou non l'extrait, il suffit de sélectionner la bonne option ensuite. J'ai mis beaucoup d'options donc je concède qu'il n'est pas toujours simple de s'y retrouver (j'aime bien faire des programmes modulaires à souhait, c'est ma maladie...^^).
      Pour ce qui est des textes contenus dans Accordéons (avez-vous le lien du plugin ? Je ne connais que Accordion dans ce style, est-ce celui-ci ?), je suis à la fois surpris et pas du tout. En fait, la page contenant le shortcode de l'accordéon (je suppose que vous utilisez un shortcode) ressort bien dans le moteur de recherche quand vous tapez par exemple "arbustes de pays", mais tout ce qui est dans l'accordéon en lui-même ne ressort pas (si on tape "alisier" ou "amandier" par exemple), il faudrait décortiquer le module pour que je puisse comprendre ce qui "gêne".

  • Qu'en est-il des champs personnalisés?
    Si ce n'est déjà fait, que faut-il pour associé un champ du formulaire de recherche à un champs personnalisé spécifique?
    Merci beaucoup pour votre excellent travail et vos efforts de soutien.
    Cordialement,
    Claude

    • Les champs personnalisés sont stockés dans la table wp_postmeta, alors que le moteur de recherche recommande la recherche au sein de wp_posts (qui contient les articles, les pages, etc.). Cela reviendrait donc à faire une recherche dans plusieurs tables, ce que ne fait pas le moteur à ce jour (il faut que je le réécrive entièrement pour pouvoir faire ça, ce n'était pas prévu à l'origine...). De fait, cela empêche la recherche dans les champs personnalisé actuellement.

  • dimitri dit :

    Bonjour à vous,
    je n'arrive pas à paramétrer votre plugin afin qu'il cherche dans mon carnet d'adresses (Connections Business Directory) et l'agenda (All-in-One Event Calendar) que j'affiche avec des shortcodes. Merci de votre aide. Cordialement.

    • Bonjour,
      Mon plugin permet de remplacer le moteur de recherche interne de WordPress, et éventuellement d'aller chercher dans d'autres tables, mais une seule à la fois. Il est surtout fait pour remplacer le moteur classique de WordPress, je pense donc qu'il ne sera pas possible de l'adapter à votre besoin.

      • dimitri dit :

        Merci. En connaissez-vous un autre capable de répondre à mon besoin ? Merci encore.

      • Très sincèrement non, mais ça doit exister je pense. Il y a quelques moteurs comme le mien mais après, je ne pense pas qu'il en existe beaucoup qui permettent d'aller faire des recherches multitables... :(

  • Christophe dit :

    Bonjour,

    Je suis novice et j'aimerai créer une page qui sélectionne des éléments de recherche et qui les affichent comme résultat dans la même page. J'ai rechercher des exemple de page mais rien trouver de concret.

    Serait-il possible de m'aiguiller?

  • Patrick dit :

    Bonjour Mathieu, Merveilleux plugin que j'utilise depuis un moment déjà.
    Je suis sur WP 4.4 avec un nouveau thème.
    Le seul hic dans cette nouvelle version dans votre plugin, c'est qu'il n'affiche que le texte intégral. Même si j'ai mis le Affichage de l'article ou de l'extrait à aucun des deux, il persiste. Je ne voudrais que le titre de l'article. Quelque chose m'a échappé?
    Merci pour ton aide et ton excellent travail.

    Patrick

    • Bonjour et merci pour les compliments.
      Je ne comprends pas trop pourquoi ça vous fait ça, je n'ai pas mis à jour le plugin depuis quelques mois donc normalement, rien ne devrait changer. Je suis étonné que ça vous affiche le texte complet car ça utilise le get_the_excerpt() de WordPress qui récupère l'extrait. Peut-être que j'ai un bug dans le code, il faudrait que je vérifie, mais sur ce blog ça fonctionne normalement par exemple en mettant "aucun des deux" (ça retire bien le texte), et j'utilise sûrement la même version que vous.

      • Patrick dit :

        Je suis vraiment désolé, il suffisait de placer le code abrégé dans le search.php. Je croyais que c'était une option de plus.

        Merci pour tout,

        Patrick

    • Patrick dit :

      En fait je vient de m'apercevoir que le plugin n'est pas encore ajusté pour WP 4.4. Alors on attendra. Votre plugin est très bien car il peut n'afficher que la liste des titres. Tous les plugins affichent les pages complètes, quel utilisateur va fouiller 128 pages???
      Alors à bientôt avec une nouvelle version.
      Patrick

      • Je ne comprends pas comment cela se fait que le plugin ne fonctionne pas parfaitement chez vous en WP 4.4, je suis moi-même dans cette version sur 4 de mes sites qui utilisent le plugin sans aucun souci. :(

      • maillebouis dit :

        @M Chartier
        Je pense qu'il voulait simplement dire que quand on fait la recherche des extensions à ajouter sur WordPress 4.4.2, le votre apparaît avec la mention : "Non-testé avec votre version de WordPress" ce qui peut éveiller des réserves...

  • maillebouis dit :

    Bonjour,
    Serait-il possible à moindre difficulté d'adapter votre extension WP aux produits de Woocommerce qui ressemblent aux articles WP (présence de catégories, ....)?
    Vos idées seront les bienvenues...

    • Bonjour,
      En toute honnêteté, vous me posez une colle. Je n'ai pas vérifié comment étaient agencées les tables MySQL de Woocommerce, mais si vous pouvez cibler une table précise, alors oui, ça me semble jouable de l'adapter. En gros, il faudrait juste modifier les requêtes finales du plugin en ne limitant pas aux types "post" ou "page" comme actuellement, mais en ouvrant aussi aux produits. Si en revanche WooCommerce mélange les tables, ça risque d'être compliqué et d'impliquer beaucoup de codes...

  • maillebouis dit :

    Quand on introduit un produit dans Woocommerce, il se retrouve dans la table ..._post avec entre autres les champs post_content, post_title, post_excerpt, post_type="product' renseignés... Ainsi, je pense que c'est jouable, mais pouvez-vous me dire sur quels fichiers des 9 WP-Advanced-Search-????.php je dois bidouiller pour ajouter le type "product"?

    • Parfait, alors ça semble jouable en effet.
      Allez aux lignes 565-577 du fichier WP-Advanced-Search-Function.php (à la racine du plugin). Ce sont les types de données récupérés dans les options. Vous pouvez ajouter ici ceci :
      ...
      } else if($select->postType == "product") {
      $wpAdaptation = "AND post_type = 'product'";
      }
      ...
      Pour que ce soit parfait, il faut donc rajouter une option "Produits" dans le plugin, via le fichier WP-Advanced-Search-Options.php (lignes 160-164). Rajoutez ceci :Ensuite, il ne vous restera qu'à sélectionner l'option "Produits" dans les options, et tout devrait fonctionner normalement, ça ira chercher à l'intérieur des produits uniquement. :D

  • maillebouis dit :

    J'utilise Notepad++. Toutes vos lignes de code se termine par un CR CRLF ce qui fait que vos lignes de code sont séparés par une ligne vide. Peut-être à l'origine d'une incompréhension de ma part???
    1/ En ligne 565-577 (je supprime la ligne vide) de WP-Advanced-Search-Function.php je suis dans une boucle foreach et j'ai :
    $categoryID = get_cat_ID($ctg->name);
    $categoryURL = get_category_link($categoryID);
    $output .= ''.$ctg->name.'';
    if($nbCategory > 1 && $counter postType == « product ») {
    $wpAdaptation = « AND post_type = ‘product' »;
    }
    C'est bien cela? Ce qui me parait un peu bizarre... J'opterais plutôt sur MA ligne 1077 ce qui me donnerait cela :

    ............$wpAdaptation = "AND (post_type = 'page' OR post_type = 'post') AND post_status = 'publish'";
    } else if($select->postType == "all") {
    $wpAdaptation = "AND post_status = 'publish'";
    } else if($select->postType == "others") {
    $wpAdaptation = "";
    } else if($select->postType == « product ») {
    $wpAdaptation = « AND post_type = ‘product' »;
    } (} à supprimer???)
    } else { // Au cas où...
    $wpAdaptation = "AND post_status = 'publish'";
    }

    2/ Dans le fichier WP-Advanced-Search-Options.php (lignes 150-164), j'ai:
    "postType" => $wp_advanced_search_posttype,
    "categories" => serialize($wp_advanced_search_categories),
    "ResultText" => $wp_advanced_search_resulttext,
    "ErrorText" => $wp_advanced_search_errortext
    ),
    array('id' => 1)
    );
    En cette ligne 164, je rajoute ???:
    postType == ‘product’) { echo ‘selected= »selected »‘; } ?> onclick= »cacher(‘ctgBlock’) »>
    Ou je vais plutôt (ce que je pense) en MA ligne 322 :
    <option value="pagepost" postType == 'pagepost') { echo 'selected="selected"'; } ?> onclick="cacher('ctgBlock')">
    et je rajoute :
    <option value="pproduct" postType == ‘product’) { echo ‘selected= »selected »‘; } ?> onclick= »cacher(‘ctgBlock’) »>

    3/ Pour éviter de revenir sur ces modifs lors de vos mises à jour, j'installe plutôt ces 2 fichiers modifiés dans mon thème enfant à /MonThème-Enfant/wp-advanced-search/ ???

    4/A la dernière ligne de WP-Advanced-Search-Function.php, j'ai vu que vous avez créé un shortcode. Mais [advanced-search] dans les pages WP ne semble pas fonctionner???? A moins qu'une chose m'échappe encore!!!

    • Ah oui en effet, si vous avez des lignes dédoublées, les lignes que je vous ai indiqué ne correspondent pas (il faut sûrement doubler leur nombre pour tomber juste... ^^). Vous devez voir des choses un peu comme je vous les ai montrées, ou au pire, il faudra qu'on se les envoie par email si vous préférez.

      Concernant le shortcode, je l'ai créé surtout pour les personnes qui préfèrent utiliser do_shortcode() que la fonction PHP que j'ai créée, c'est aussi bête que ça. :D

  • maillebouis dit :

    J'avance lentement car je connais mal ce domaine...
    1/ J'ai installé et activé votre pluggin sur mon site wordpress-woocommerce.
    2/ J'ai regardé le paramétrage qui semble conforme à votre documentation. Pour l'instant je veux valider mes essais avec des recherches sur des articles.
    3/ Je crée une simple page WP avec un formulaire de recherche comme capture d'écran dans 1/ de votre doc du type:

    4/ J'ai modifié search.php dans mon thème-enfant comme conseillé dans 2/ de votre doc
    5/ Le retour est une erreur 404 (avec ma page 404.php)

    Comment je dois faire pour introduire votre formulaire de recherche dans ma page WP????
    Merci.

  • maillebouis dit :

    1/ Bon, comme mon thème n'avait pas de search-form.php, j'en ai créé en suivant https://codex.wordpress.org/Creating_a_Search_Page. Même s'il y a encore beaucoup à peaufiner, j'arrive à mon moteur de recherche.
    2/ En modifiant les deux fichiers .php indiqué. J'ai un premier problème. Quand je sélectionne "Produit" je n'affiche pas les catégories des produits. Initialement dans le code donné il y avait onclick="cacher('ctgBlock')" que j'ai modifié par onclick="montrer('ctgBlock')" mais les catégories ne s'affichent pas...
    Peut-être une autre modif à faire? Qu'en pensez-vous? Merci de votre patience

  • Axel dit :

    Bonjour Mathieu,

    Je suis face à un soucis lorsqu'il s'agit de paramétrer votre plugin, dès que je fais une modification des options générales du moteur, elle se réinitialisent une fois que j'enregistre mes modifications.

    De plus, lorsque je souhaite installer les index FULLTEXT, la page qui en résulte m'affiche uniquement "erreur". Est-ce un problème déjà constaté chez d'autres utilisateurs du plugin ? Auriez-vous une solution à m'apporter svp ?

    • Bonjour,
      Avez-vous installé le plugin il y a longtemps ? J'essaie de faire un suivi des mises à jour à chaque changement de version, mais il arrive que cela provoque des bugs si trop de versions sont mises à jour d'un seul coup. Souvent, je conseille de désactiver et réactiver le plugin (mais ça fait perdre les réglages complets). C'est souvent le meilleur moyen pour repartir sur de bonnes bases. J'ai testé le fulltext à l'instant et ça fonctionne bien de mon côté, je n'ai pas de retours négatifs à ce sujet. :(
      Soit il s'agit d'un problème de version (ce que je pense), soit vous n'avez pas activer les index fulltext (il y a un lien à cliquer dessous la liste de choix pour ça, ou dans la documentation du plugin), soit il s'agit d'un autre problème lié à votre site ou serveur (ce serait étonnant).

  • Sébastien dit :

    Bonjour Mathieu,

    Je suis débutant wordpress et je viens d'installer votre extension, je n'ai pas du tout compris comment installer malgré les explication dans la documentation présent dans les réglages...

    Enfaite à la base je recherche une extension capable d'afficher des miniature des articles trouver dans la recherche (actuellement j'ai comme résulta de recherche une liste d'article sans photo ce qui me pose problème), car j'ai beaucoup d'article et c'est pas possible de devoir cliquer sur chaque résulta pour voir de quoi il s'agit...

    J'aimerai donc savoir si votre extension permet d'afficher des images (aperçu) dans le résulta trouver, et si oui, remplace t il le bouton de recherche wordpress ? car il faut que le moteur de recherche soit présent sur ma page statique comme celui de wordpress

    Si votre extension permet de faire ce que je veux, pouvez vous m'expliquer comment l'installer car j'ai rien compris je suis perdu ^^'

    merci

    • Bonjour,
      Mon extension permet beaucoup de choses, dont l'affichage des images à la Une (photos miniatures) en effet. Pour l'installer, il faut modifier le fichier qui affiche les résultats de recherche dans votre thème WordPress (souvent appelé search.php ou directement situé dans index.php). Il suffit de remplacer la "boucle" WordPress (voir le code dans ma documentation) par le code WP_Advanced_Search();, c'est tout. Ensuite, il faut ajouter deux paramètres pour rendre le moteur fonctionnel, à savoir la valeur de l'attribut "name" du champ de recherche ("s" par défaut en général, comme ce que j'ai mis dans le plugin).
      Toutefois, si votre but est uniquement d'ajouter des images dans vos résultats, je me demande si ce ne serait pas mieux d'ajouter ça dans votre page de résultat. Vous pouvez afficher les miniatures avec le code the_post_thumbnail();.
      Je sais que tout ça est compliqué, mais c'est vraiment du développement WordPress ici, ce n'est pas forcément à la portée de tout le monde. :(

  • VAILLANT Francois dit :

    Bonjour,
    J'ai installé le plugin sur un réseau WordPress Multisites. Il fonctionne à merveille sur le site principal, mais pas du tout (ou presque) sur les autre sites :
    Notamment, la page des réglages à quasiment tous ses champs vides, et même en les remplissant et en sauvegardant, ils restent vides ! Est ce normal ? Y-a-t-il une opération spéciale à faire pour le multisites ?
    D'avance merci.
    Cordialement
    Francois VAILLANT

    • Bonjour,
      Pour être honnête je n'avais jamais installé de WordPress Multisites avant votre intervention. J'ai donc testé ça ce matin en local, et je constate effectivement que les tables de la base de données sont créées au nom du site parent (qui gère le multisite), et non de ses dépendances. En gros, en changeant uniquement le nom de la table pour le multisites, j'ai réussi à tout faire fonctionner. Le problème, c'est qu'il faut que je retouche entièrement mon code pour que ça créé autant de bonnes tables qu'il y a de multisites, et là, ce n'est pas gagné. :S

      • David dit :

        Bonjour,

        Je me retrouve avec le même soucis et j'aurais voulus savoir si une solution a été apporté ? Le plugin fonctionne bien, mais il me manque cette possibilité d'ajouté plusieurs tables pour que cela fonctionne comme j'en ai besoin. J'ai laissé un message sur wordpress la semaine à ce sujet et pas eu de réponse, donc je me permets de vous le copier ici :)

        "Votre plugin est génial et permet déjà pleins de choses tout en restant simple d’installation.

        J’ai cependant un soucis avec le multisite. En effet, pour un client, je fais un teste sur mon serveur en installant un multisite, qui, malheureusement est utilisé en répertoire. Je ne sais pas comme changer cela, car au final ça sera 3 sites sur avec chacun un nom de domaine différent.

        Mon soucis est, dès lors, que les tables sont incrémentées automatiquement (bd_posts, bd_1_posts, bd_2_posts), je ne peux faire mes recherches que sur une table. Est-ce que j’ai un moyen d’ajouter plusieurs tables de recherches ?
        "

        Merci d’avance pour votre réponse.

      • Si je comprends bien, vous avez du multisite et vous voudriez que chaque site puisse chercher dans les tables de l'ensemble des sites du multisite, c'est bien ça ? Si oui, cela n'est pas possible et n'est pas prévu. Quand j'ai conçu le moteur de recherche à l'origine en PHP (avant d'en faire un plugin WordPress), je n'avais pas du tout envisagé du multi-tables, mes requêtes n'ont donc pas été pensées en ce sens et ce serait un travail absolument titanesque de tout réadapté (et cela ferait planter d'autres fonctionnalités par la même occasion). J'ai rendu le plugin compatible multisite mais pour que chaque site puisse avoir ses propres réglages du moteur de recherche "unique", je ne peux malheureusement pas le faire chercher dans les "x" tables du multisite... :-(

  • Marci dit :

    Bonjour.
    J'ai installé votre plugin qui semble tout à fait correspondre à mes attentes.
    Je dis "semble" parce que je ne suis pas arrivé au bout de l'installation : étant plus qu'ignorant pour tout ce qui concerne le php et les fichiers de fonctionnement de wordpress, je bute sur la partie qui nécessite les changements de code pour la raison toute bête que je ne trouve pas l'endroit où se trouvent les deux fichiers en question : search-form.php et search.php.
    J'utilise le thème DIVI, et n'ai trouvé que search-result.tpl.php et search-theme-form.tpl.php, mais leur contenu ne correspond pas à l'exemple que vous donnez.
    Help !
    Merci

    • Bonjour,
      Il me faudrait votre thème pour vous indiquer où placer le code. C'est l'inconvénient de certains thèmes premium qui ne codent pas "à la WordPress" pour des raisons que je ne m'expliquerai jamais. Dans votre cas, il y a tout de même de fortes chances que ça se passe dans le fichier search-result.tpl.php, ce serait le plus logique.

      • Marci dit :

        Désolé pour mon courrier tardif et merci pour votre réponse. Où puis-je vous envoyer le fichier search-result.tpl.php, ou le contenu complet du thème (DIVI) si nécessaire ?
        Encore merci pour votre aide.
        Cordialement
        Marci

      • Pas de soucis, ne vous inquiétez pas. Cliquez sur mon nom dans les commentaires, cela vous envoie normalement sur mon CV en ligne. Il y a tout dans la page contact, comme ça vous pourrez m'écrire librement et m'envoyer tout ça. ;-)

  • Alain dit :

    Bonjour Mathieu,
    Et d'abord, grands bravo et merci pour ce travail et sa mise à disposition.
    Ma configuration : WP 4.6.1
    Thème : Food Recipes
    Plugin particulier : ZipList Recipe
    Le moteur de recherche de WP étant pauvre, j'ai installé votre plugin. J'ai modifié le search.php comme vous l'indiquez. Dans le paramétrage de votre plugin, j'ai demandé à lire la table wp_amd_zlrecipe_recipes qui est créée par le plugin ZipList Recipe. J'ai précisé les colonnes ingredients, recipe_title, instructions liées à cette table. Pourquoi cette table ? Parce que sinon la table wp_posts ne contient que les titres des recettes. et pas les ingrédients.
    Si je cherche dans les recettes, par exemple, le mot "bouillon", je n'obtiens pas de résultat . Or, si j'exécute la même recherche directement en sql dans la base, j'obtiens bien toutes les recettes. Avez-vous une idée de ce qui cloche ?
    Cordialement,
    Alain

    • Bonjour,
      Malheureusement, je me demande si je ne vais pas retirer le premier paramètre qui permet de changer les tables. En effet, plusieurs options m'obligent à centrer le code sur wp_posts, c'est sûrement ce qui explique pourquoi ça ne fonctionne pas dans votre contexte. :(

      • Alain dit :

        Bonjour Mathieu,
        Merci pour cette réponse rapide. Effectivement, je me doutais bien que cette requête posait problème.
        C'est dommage de retirer cette option ; elle apporte une innovation très intéressante par rapport à tous les plugins qui améliorent, prétendument, la recherche sous WP.
        Mais je peux comprendre. Encore merci et bon courage.
        Cordialement,
        Alain

      • En fait l'option fonctionne parfaitement, mais dans des cas super précis. Sinon, ça ne fonctionne pas. J'ai dû recentrer la recherche sur WP_posts à cause de certaines autres options. Il n'était pas possible de coupler les deux types de possibilités. J'espère pouvoir refaire ça mieux à l'avenir... ^^

  • Thomas dit :

    Bonjour Mathieu,

    Une question toute simple pour moi : comment afficher les résultats de la recherche en français ?
    Effectivement s'affichent en anglais les informations génériques comme "Older posts" ou bien "Serch for : ...".
    Je suis sûrement passé à côté de quelque chose.

    Merci à vous pour votre travail

    • Bonjour,
      L'affichage que vous me décrivez signifie que vous n'avez pas retiré tous les éléments gênants de votre fichier search.php. Mon moteur n'utilise pas de "older posts" (articles précédents) ni la phrase par défaut "Search for:". Ce sont des éléments de votre thème qui persistent là, et non des éléments de mon moteur.

      • Thomas dit :

        Merci de votre réponse Mathieu, et désolé pour le délai de la mienne.
        Le soucis, c'est que je n'arrive pas à déterminer la boucle d'affichage initiale des recherches de mon thème.
        En effet, ma feuille de style n'est pas vraiment comme dans votre exemple, et comporte énormément de données que je ne sais traduire. De ce fait, lorsque je supprime plus d'entrées (ce que je pense être la totalité de cette boucle), la page de résultats de recherches se retrouve vide de contenu. Il n'y a que le squelette de mon site (header, footer,...) qui apparait. Je ne sais donc pas ce que doit exactement substituer le code "" dans ma page search.php, ou alors si je dois à la suite de ça activer une autre option que j'ignore...

        Mon site : http://dev.alphonsedaudet.org/wordpress/ (en version de développement)
        Merci à vous

      • Cela peut arriver en effet, le code de certains thèmes n'étant pas fait "à la WordPress" parfois, ça peut être plus difficile de repérer ce qu'il faut garder ou non. N'hésitez pas à m'envoyer votre fichier search.php par email si vous voulez, je pourrais vous faire la modification sans problème.

  • Julie dit :

    Bonjour,

    J'ai installé votre pluggin. J'ai peut être mal paramétré ou cela vient peut-être de mon site, mais lorsque je teste la recherche cela ne fonctionne pas. La page de résultats me dit qu'aucun résultat n'est trouvé. Je créé un site de concession automobiles et je souhaite mettre en place un module de recherche en lien avec les champs personnalisés créés. Avez-vous une idée d'où peut venir mon problème ?

    Je vous remercie d'avance

    • C'est sûrement un mauvais réglage en effet, mais si déjà ça vous affiche qu'il n'y a aucun résultat, c'est que la fonction WP_Advanced_Search() a dû être bien implantée, c'est déjà bien !
      Les réglages majeurs se font dans le premier panneau d'options, il faut bien vérifier le paramètre "name" du champ de recherche et le nom de la table (normalement c'est bon ça) surtout. Par défaut, le name est "s" mais selon le thème, ça peut différer. Si vous avez un doute, n'hésitez pas à m'envoyer votre thème zippé par email, je pourrai regarder si ça fonctionne chez moi, et si non, ce qui ne va pas.

  • ANTONELLA dit :

    Bonjour !!
    Et bravo pour votre travail !
    J'ai l'impression que je pourrais trouver mon bonheur avec vous mais une question reste : peut on régler les paramétrages pour ne chercher des réponses que parmi les articles et pages indexées ?
    Ce serait formidable de pouvoir faire cela, meme en rajoutant un bout de code !
    À vous lire

    • Bonjour et merci. :D
      Je ne comprends pas trop ce que vous cherchez, vous voulez parler des articles "publiés" et pages "publiées", pas "indexées", si ? J'ai bien mis l'option "Tous les contenus publiés dans les options" pourtant. :(

      • Non Matthieu
        je parle bien de bloquer les réponses des pages non indexées.
        J'ai bcp de page non accessible à mes non abonnés : ces pages ne sont pas indexées.
        Je cherche un moteur pour faciliter la navigation parmi les pages indexées.

      • Ah je comprends mieux, il faut afficher uniquement les pages "publiques" en gros, pas les privées ? Si oui, j'ai peut-être une idée pour faire cela. Vous utilisez les protections classiques de WordPress pour les pages (visibilité "privé" ou "protégé par mot de passe") ?

      • Bonjour Matthieu !
        En fait non, les pages ne sont pas protégées par mot de passe ( trop pénible pour les internautes.... tu as toujours X personnes par jour qui n'arrivent pas à saisir un mot de passe ..... :-( . ça m'a vite fatigué !!
        Ces pages sont simplement réglées sur NO INDEX ( je le fais avec le plugin Yoast vu que je m'en sers par ailleurs) et il n'y a absolument aucune url qui pointent vers elles hormis l'email qui indique à mes internautes où récupérer leur "cadeau' post inscription. Ce sont donc juste des pages orphelines et non indexées par les moteurs. J'aurai dû les mettre carrément sur un autre site sous-domaine ... mais l'erreur étant faite, je me dis qu'il y a peut-être une astuce simple auprès de toi ?
        Je suis à ton écoute et on peut en parler par MP si besoin.

      • Ah mince, je ne pourrai pas faire grand chose dans ce cas, car il s'agit d'une balise meta générée par Yoast en effet. Je peux jouer avec la base de données de WordPress avec mon moteur, donc uniquement avec les données enregistrées, et ce n'est pas le cas pour le noindex. Par conséquent, il est quasi impossible de dire au moteur de ne pas afficher une page puisqu'il ne sait pas lesquelles sont indexées ou non.
        Qui plus est, il faut faire très attention avec les pages orphelines en matière de SEO, surtout si elles ne font pas partie d'une section "privée". :(

    • Antonella dit :

      Ok Mathieu
      Bon ben je vais les déplacer ces pages ... Sur un sous domaine interdit au robot.
      Au moins j'ai fait le tour de la question !
      A ce jour, j'ai quelques mots clés où je suis dans le top 3, cela n'avait pas l'air D influencer mon Ranking mais peut être que ce sera mieux apres !

  • Photo K dit :

    Bonjour
    Je suis à la recherche d'une solution pour la mise en place d'un moteur de recherche sur un intranet.
    Je me suis donc penché vers votre plugin wordpress qui a l'air au top.
    Seulement après sa mise en place l'autocompletion ne semble marché que sur le premier caractère, la modification du champs ne change aucunement les proposition de mots clés renseigné dans l'index....
    Si vous avez une solution ...

    Ps; j'utilise costumizr ;-)

    Merci pour votre retour.
    Cordialement.

    • Bonjour,
      Je suppose que c'est un conflit avec d'autres Javascript, je ne vois que ça pour expliquer un tel bug car il n'y a aucune raison que cela fasse ça. C'est peut-être un problème d'encodage aussi, mais normalement avec WordPress, il n'y a pas de raison car tout est en UTF-8 par défaut.
      Ce type de problème est très difficile à évaluer pour moi car je ne le rencontre pas (il suffit de faire une recherche sur ce même blog pour voir que l'autocomplétion fonctionne sans accroc) et donc que je ne sais pas trop où trouver une faille. :$

  • Olivier dit :

    Bonjour,
    J'ai remarqué que l'autocomplétion ne fonctionne pas correctement, j'ai l'impression que la recherche se fait uniquement avec le 1er caractère saisi dans le champ de recherche.
    J'ai donc modifié la requête dans le fichier "class.inc\autocompletion\autocompletion-PHP5.5.php" :
    $requeteSQL = "SELECT DISTINCT ".$field." FROM ".$table." WHERE ".$field." LIKE '".$arg.$link->real_escape_string($query)."%' ORDER BY ".$field." ASC, idindex DESC LIMIT 0 , ".$limitS."";
    par
    $requeteSQL = "SELECT DISTINCT ".$field." FROM ".$table." WHERE ".$field." LIKE '".$arg.$link->real_escape_string($query)."%' ORDER BY ".$field." ASC, idindex DESC";
    L'autocomplétion fonctionne maintenant de manière attendue.
    Cordialement

    • Bonjour,
      Ce que vous avez changé dans la requête n'impacte en rien le fait que le premier caractère ou non soit un potentiel problème. En effet, vous avez uniquement retirer la partie "LIMIT 0..." qui signifie que je demande au système d'autocomplétion de n'afficher que les "x" derniers résultats qui répondent à ce que vous tapez. Tant mieux si ça fonctionne, mais dites-vous que si vous avez 10 résultats qui répondent favorablement, ça vous les proposera. :D

      • Olivier dit :

        Bonjour,

        En effet j'ai pensé à ce cas de figure, j'obtiens bien le nombre de propositions tel que paramétré dans les options de l'autocomplétion. Par exemple, en sélectionnant 10 j'ai 10 résultats qui s'affichent ensuite en testant avec 3 j'en obtiens uniquement 3 résultats. Donc le script jquery "jquery.autocomplete.js" affiche bien le nombre de résultat correct.
        Le problème en ajoutant LIMIT dans la requête c'est que comme celle-ci ne s'exécute que lors de la saisie du premier caractère dans le champ de recherche, les résultats qui ne sont pas déjà présents dans la liste des propositions ne sont proposés.

        Exemple avec l'autocomplétion affichant 3 résultats :
        Liste de mots :
        cabane
        cabosser
        cabriole
        certificat
        chaloupe

        En tapant "c", 3 résultats (cabane, cabosser, cabriole) vont être proposés (la requête s'exécute, jusqu'ici tout va bien ;-)). En tapant ensuite "e" (donc il y a "ce" dans le champ de recherche), aucun résultat n'est proposé (la requête n'est pas ré-exécutée) alors qu'il aurait dû y avoir une proposition (certificat). La liste des propositions est tronquée à cause de LIMIT.

        Si ça peut aider à améliorer le plugin ;-)

        Bonne soirée

        Cordialement

      • Salut et merci ! :D
        Je n'ai pas eu ce type de problème dans mes cas de tests, mais effectivement, la limite ne sert à rien ici puisque c'est le Javascript qui le fait. Par conséquent, j'ai fait la modification et la mise à jour 3.3 du plugin est active. J'en ai profité pour rajouter la possibilité d'ajouter des tags dans les index inversés (autocomplétion et correction automatique des mots), cela rajoutera une possibilité pour remplir les champs. ;-)
        Merci en tout cas !

      • Olivier dit :

        De rien :-)
        Et merci, ça fonctionne bien avec la nouvelle version.
        Bon dimanche

  • Alexenndra dit :

    Bonjour,
    J'essaie d'inclure la barre de recherche du plugin dans mes pages web (préférablement dans les widgets) mais je n'arrive pas à la mettre quelque part dans le site web. Apparemment, il faut modifier une ligne de code dans le fichier "Search.php", mais je ne comprends pas bien quoi...
    J'ai tentez de enlever la boucle while et de mettre a la place le code mais ca ne fonctionne pas...
    Ça fait juste planter mon moteur de recherche...
    J'ai l'impression que c'est évident, puisque tout le monde semble réussir a utiliser ce plugin, mais pour moi c'est un vrai casse tête !

    Est'il possible d'avoir une explication un peu plus précise de ce qu'il faut changer dans le code?
    Une explication pour les nuls un peu comme moi :'(

    Ce serai formidable, ça fait deux jours que j'essaye de m'en sortir, en vain...

    Merci,

    Alexenndra

    • Bonjour,
      Le plugin n'ajoute pas la barre de recherche, il utilise la barre de recherche uniquement (dont celle du widget "Recherche" par défaut de WordPress). Ensuite, la fonction ou le shortcode que je propose représente la zone d'affichage des résultats de recherche, qui correspond en général à la page search.php. Classiquement, les résultats sont affichés avec une boucle WordPress (if(have_posts()): while(have_posts)...) mais dans mon cas, la boucle est générée par ma fonction, donc il faut juste mettre < ?php WP_Advanced_Search(); ?> à l'endroit où vous voulez afficher les résultats.
      Ce n'est pas forcément simple pour les profanes, je le concède, le moteur de recherche est un monde un peu technique et cela peut être difficile à appréhender. :(

  • Bonjour
    Dans le cadre d'un projet d'école, j'ai installé votre extension WP-Advanced-Search 3.3.1,
    L’extension semble fonctionner, elle me retourne bien des résultats de recherche, pourtant la page de résultat de recherche génère des erreurs.
    Me connaissances étant encore limitées et étant pris par le temps pour rendre mon projet je me permet de laisser ce message sur votre forum. Le site est héberge sur un sous domaine livré par mon organisme de formation.
    Voici les un copier/coller des erreurs rencontrées :
    Notice: Use of undefined constant WPLANG - assumed 'WPLANG' in /data/clients/cci/disii-2016-17/houssiere.daniel/www/locagite/wp-content/plugins/wp-advanced-search/WP-Advanced-Search-Function.php on line 77
    Erreur de la base de données WordPress : [Table 'f_danihou.locagit_autocorrectindex' doesn't exist]
    SELECT * FROM locagit_autocorrectindex

    Erreur de la base de données WordPress : [Table 'f_danihou.locagit_autocorrectindex' doesn't exist]
    SELECT * FROM locagit_autocorrectindex

    Notice: Undefined index: page in /data/clients/cci/disii-2016-17/houssiere.daniel/www/locagite/wp-content/plugins/wp-advanced-search/WP-Advanced-Search-Function.php on line 588.

    En vous remerciant par avance pour votre aide.
    Cordialement
    Dann

    • Bonjour,
      Cette erreur arrive car il ne retrouve pas la constance WP_LANG (historiquement utilisée par WordPress) qui définit la langue en cours d'utilisation. Cette dernière est parfois retirée des sites WordPress donc ça peut arriver. Si vous ajoutez la ligne suivante dans le fichier wp-config.php (à la racine de WordPress), ça devrait fonctionner (à condition de renvoyer le fichier sur le FTP bien entendu) :
      define('WPLANG', 'fr_FR');

  • Thomas dit :

    Bonjour Mathieu,

    Tout d'abord bien joué pour ton plugin WordPress il est vraiment cool !
    Je voulais savoir si c'était possible de faire de l’autocomplétion avec posts qui sont déjà enregistrés dans la base de données et non des mots ou expressions qui sont déjà tapés par l'utilisateur.

    • Bonjour Thomas,
      Alors non malheureusement, l'autocomplétion ne se fait qu'à partir de l'index inversé. Comme il s'agit d'un moteur PHP indépendant à la base, je n'ai fait que l'adapter à WordPress en rajoutant quelques options spécifiques. Je veux à terme réécrire l'ensemble du moteur, et de fait, du plugin (mais quand je vois la masse de travail, j'en transpire déjà... ^^). :D

      • Thomas dit :

        Ah oui tu m'étonnes... !
        Enfaite je voulais utilisé ton plugin pour faire une recherche par ville et code postal sur des champs ACF dans des Custom Post Type. Mais ça me parait plutôt compliqué avec ton plugin, il vaut peut-être mieux que je développe ma solution sur mesure ?

      • Hum, si je ne m'abuse, ACF enregistre les données dans des "post meta", donc ce ne sera pas simple de faire de l'autocomplétion en allant chercher là-dedans. C'est possible, mais ça va demander un développement spécifique à WordPress, etc.

      • Thomas dit :

        Exact !
        Après je pense que c'est faisable en ajoutant quelques requêtes SQL avec ton plugin mais je vais passé plus de temps à comprendre comment tu l'as fais qu'a codé ma solution...

      • Tu as à peu près tout résumé.^^
        Normalement ce sont plus que quelques requêtes SQL, mais non pas parce que c'est "hyper compliqué", mais juste parce que le plugin jQuery que j'utilise pour l'autocomplétion n'est pas génial (je ne te conseille pas le même d'ailleurs). Il m'est difficile de le changer dans le plugin actuel vu son intégration, mais je ne referai pas la même bêtise... ^^

      • Thomas dit :

        Que me conseillerais-tu comme plugin JQuery pour l'autocomplétion ? J'allais utilisé le même...

      • Sincèrement j'en avais trouvé plusieurs mais beaucoup ne pouvaient fonctionner avec ma méthode de recherche, c'est pour cela que j'avais pris celui-ci. J'hésite à créer mon propre système d'autocompletion à l'avenir mais il m'est difficile de t'en conseiller un plus qu'un autre. :(

  • Anthony M dit :

    Bonjour Mathieu,
    J'aurai besoin d'un moteur de recherche puissant sur mon site, permettant l'auto-complétion et la correction de termes mal orthographiés.

    Après quelques recherches, je suis rapidement tombé sur ton plugin, que je me suis préssé d'installer !
    J'aurai quelques questions sur son utilisation :
    - j'ai cru comprendre que l'auto-completion fonctionne avec les anciennes recherches effectuées par les internautes. Est-ce bien cela ?
    - j'ai un problème pour la correction auto : "Erreur de la base de données WordPress : [Table 'xxxx.yyyyy_autocorrectindex' doesn't exist]".
    Toutes les autres tables ont bien été créées, mais pas celle-ci. Ai-je loupé une manip ?
    Pour testé, j'ai créé manuellement la table dans la BDD, et suis retourné dans l'admin WP. La colonne de droite de la page "Correction automatique" me propose d'entrer manuellement des expressions à proposer selon la recherche du client (type : moteur -> moteur de recherche). Est-ce que tout le principe de correction est basé là dessus ?

    Je te remercie d'avance, et te félicites pour ton travail sur ce plugin !

    • Salut,
      Normalement, l'auto-completion peut se faire à partir des anciennes recherches des utilisateurs et/ou à partir de mots que tu entres toi-même dans l'index inversé dédié à l'auto-completion. Les deux sont possibles.
      Pour ce qui est de la correction auto, as-tu créé l'index inversé ? Dans la page d'options dédiée à la correction automatique, tu as l'option "Créer l'index inversé ?" (juste au-dessus du bouton "Enregistrer" à gauche. Il faut faire ça sinon ça ne fonctionnera pas.
      Voilà ! ;-)

      • Anthony M dit :

        J'ai créé l'index inversé ! Je me sens un peu bête ! :D
        Par contre, je n'avais pas le bouton "enregistrer" sur la page d'option de création auto. J'ai du bidouiller pour ajouter le bouton moi-même et valider mon choix.

        Après avoir fait quelques tests, je ne comprends toujours pas comment faire fonctionner la correction automatique.
        Sur un site de test, j'ai des articles parlant de la découpe laser 2D. Je fais une recherche "découpe laser" ou "découpe", et je trouve des résultats. Parfait.
        Par contre, si je fais une recherche "décope", je ne trouve aucun résultat (logique), mais rien ne me propose de corriger mon erreur. Est-ce normal ?

      • Bon tant mieux si l'index est créé, c'est la base ! ^^
        Pour ce qui est du bouton "Enregistrer" qui disparaît, c'est un souci avec WordPress, c'est déjà arrivé à d'autres personnes. Je ne me l'explique pas, mais ça peut arriver...

        Pour que la correction orthographique fonctionne, il faut que tu ajoutes les mots bien orthographiés dans l'index (d'où sa création obligatoire). La colonne de droite dans les options de l'auto-correction est dédiée à ça. En gros, c'est à toi d'ajouter "découpe" et "laser" dedans. Ainsi, la technologie va pouvoir proposer automatiquement la bonne orthographe en cas de faute proche. Nous n'avons pas le choix, il n'existe aucun système qui connaîtrait déjà les bonnes orthographes de mots dans chaque langue du monde, même Google fonctionne ainsi en réalité, à la différence qu'il ne remplit certainement plus manuellement les bons mots. ^^

  • Bernard Bel dit :

    Bonjour,

    J'utilise WP-Advanced-Search sur plusieurs sites WordPress que j'ai implémentés. Mais je rencontre une difficulté avec un site récupéré de web.archive.org à l'aide d'un outil semi-automatique qui convertit le site archivé en site WordPress :

    https://www.waybackmachinedownloader.com/en/wordpress-conversion/

    Le résultat est très satisfaisant, et le site a pu ensuite être actualisé (correction de liens) :

    https://ciane.net/archive/egn2006/accueil/

    Le problème est d'implémenter une fonction "Search". En effet, le site reconstitué ne peut pas recevoir de widget. La seule manière d'intervenir sur sa structure est d'éditer header.php et footer.php, qui pour cet exemple contiennent déjà les menus gauche et droit apparaissant en colonnes sur toutes les pages.

    Remarque : même le search.php du thème fabriqué pour le site rénové se réduit à :

    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".get_bloginfo('url'));
    exit();

    J'aurais donc besoin de code PHP à placer dans header.php, et si nécessaire du code à mettre dans search.php, permettant de faire fonctionner WP-Advanced-Search sur ce site. J'ai bien sûr installé l'extension dans l'admin du site.

    PS. Désolé si cette question a déjà été posée, je n'ai pas eu le temps de lire tous les commentaires !

    • Bonjour,
      Le moteur peut s'utiliser avec le shortcode [wp-advanced-search] ou avec le code PHP < ?php WP_Advanced_Search(); ?>. Vous n'avez donc qu'à copier une de ces possibilités là où vous en avez besoin, comme dans vos autres sites. Toutefois, sachez qu'il s'agit de l'emplacement où les résultats de la recherche s'afficheront, donc le plus simple sera peut-être de remplacé le contenu du fichier search.php par une page HTML avec mon moteur à l'intérieur...

  • Bernard Bel dit :

    Sur la page "Gestion des corrections automatiques des recherches" il n'y a pas de bouton "Enregistrer". J'essaie de désactiver l'autocorrection automatique mais chaque fois que je reviens sur cette page elle est de nouveau activée. Et pas moyen de créer l'index inversé pour a même raison...

    • Si vous avez ce problème, il y a sûrement du Javascript qui plante dans votre site, c'est un cas qui arrive fréquemment dans plusieurs plugins quand Javascript ne fonctionne pas correctement...

  • Mateo dit :

    Bonjour Mathieu,
    J'ai installé ton plugin pour que la recherche des articles sur mon site soit très simple pour mes clients.
    Mais je ne sais pas comment rajouter des mots clés type comme le sur html.
    Merci d'avance !
    Cordialement Mateo

    • Bonjour,
      Comment ça tu veux rajouter des mots clés types ? Tu parles de l'autocomplétion ou de la correction orthographique ? Dans ce cas, il faut juste aller dans les menus correspondants, il y a une grande case (zone de texte) à droite pour ajouter tout ça. ;-)

  • Michel D dit :

    Bonjour,

    Je rencontre les erreurs suivante lors de la recherche :
    [13-May-2018 09:25:50 UTC] Erreur de la base de données WordPress Table '[MonSite]_[MonPréfixe].[MonPréfixe]_autocorrectindex' doesn't exist pour la requête SELECT * FROM [MonPréfixe]_autocorrectindex faite par require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/twentyseventeen-enfant/search.php'), WP_Advanced_Search, moteurRecherche->getCorrection
    [13-May-2018 09:25:50 UTC] Erreur de la base de données WordPress Table '[MonSite]_[MonPréfixe].[MonPréfixe]_autocorrectindex' doesn't exist pour la requête SELECT * FROM [MonPréfixe]_autocorrectindex faite par require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/twentyseventeen-enfant/search.php'), WP_Advanced_Search, moteurRecherche->getIndex
    [13-May-2018 09:25:50 UTC] PHP Warning: A non-numeric value encountered in /home/[MonSite]/public_html/wp-content/plugins/wp-advanced-search/class.inc/moteur-php5.5.class-inc.php on line 372
    [13-May-2018 09:25:50 UTC] PHP Warning: Parameter 2 to wp_hide_post_Public::query_posts_join() expected to be a reference, value given in /home/[MonSite]/public_html/wp-includes/class-wp-hook.php on line 286

    La dernière se produit plusieurs fois par heure, donc je ne suis pas sût qu'elle concerne WP-Advanced-Search.
    Mais je peux reproduire les premières lignes sans aucun problème : il suffit de faire une recherche sur le site.

    Je n'ai pas de bouton "Enregistrer" pour désactiver l'auto-correction. Et la table "[MonPréfixe]_autocorrectindex" n'existe effectivement pas.

    Merci de votre aide.
    Michel.

    • Bonjour,
      Il faut normalement créer la table de l'index de correction, donc si ce n'est pas votre cas, l'erreur est tout à fait normal. En ce qui concerne le bouton "Enregistrer" qui n'est pas là, c'est un souci avec Javascript dans votre WordPress en général, parfois bloqué par un AdBlocker comme AdBlock ou Ublock, donc vérifiez en désactivant ça déjà. Vérifiez bien d'avoir créer la table de l'index de correction, et si tel n'est pas le cas, la solution sera sûrement là. Si c'est créé, mettez au moins un mot dans la liste (normalement ce n'est pas obligatoire du tout, mais par sécurité autant tout tester)... ;-)

  • Céline dit :

    Bonjour,

    Merci pour ce plugin très efficace. :-)

    J'ai ajouté l'autocomplétion > ça fonctionne : super !
    Sauf que j'ai un problème avec les accents : les "è" se transforment en à par exemple. J'ai vérifié les paramètres : tout est en UTF-8 partout, ça ne devrait donc pas poser de problème (et je n'ai aucun souci d'affiche pour les accents sur le reste du site, ce n'est que pour l'auto-complétion).
    J'ai essayé de jouer sur l'interclassement de la table "words" pour mettre la même version d'UTF-8 que celle utilisée pour sur les tables posts de wordpress, mais ça ne change rien.
    Auriez-vous une idée/solution à ce problème ?
    Le reste du plugin fonctionne à merveille, c'est vraiment dommage que ce point-là bloque. :-(

    Merci d'avance !

    Céline

    • Bonjour,
      Où se situe le problème d'accent exactement ? Est-ce dans la requête affichée après la recherche ? Est-ce dans les résultats affichés ? Il faudrait vérifier votre interclassement par défaut sur le site, car le moteur convertit bien l'ISO-8859-1 vers l'UTF-8 normalement, mais s'il s'agit d'un autre interclassement, cela peut parfois planter. Comme vous le dites, votre site WordPress est paramétré par défaut en UTF-8, ce qui est conseillé. En revanche, faites-vous parfois des copier-coller venant de Microsoft Word ou d'Open Office par exemple ? Si oui, il se peut que l'interclassement soit du ms-1252 par exemple, copié dans de l'UTF-8, et que la source du problème provienne de là... :(

  • Tony dit :

    Bonjour, le plugin est il tjrs suivi ? Je ne vois pas d'update depuis 2ans..

    • Bonjour,
      Le plugin fonctionne toujours, et est toujours suivi. J'ai mis en place les principales fonctions que je tenais à mettre en oeuvre, donc depuis ce temps, j'avoue avoir manqué de temps et d'imagination pour améliorer tout cela. Comme je fais ça bénévolement (et j'ai 7 plugins à maintenir rien que sur WordPress), ce n'est pas évident de trouver du temps pour améliorer l'ensemble (sachant que chaque nouvelle chose prendra du temps à coder maintenant).

  • Robert dit :

    Mathieu bonjour,

    Je trouve votre plugin wp-advanced-search très intéressant car je crois comprendre qu’il présente les résultats de recherche dans un large contexte et c’est ce qui manque à l’outil de recherche natif de WP, mais j’ai téléchargé l’archive zip de la version la plus récente (wp-advanced-search.3.3.3 à ma connaissance) et cette archive ne s’installe pas, malgré mais tentatives de recherche la version la plus récente, retéléchargement, redémarrage…
    Est-ce normal ? Je suis sur WordPress 5.2.1 et PHP 7.3.2. Y aurait-il des problèmes de compatibilité ? Je précise que je ne suis pas du tout expert en code, donc j’appréhende les manipulations que vous décrivez comme nécessaires, mais je verrais bien une fois que j’y serai, car dans un premier temps il serait bon que l’archive s’installe.
    Merci de m’éclairer si vous le pouvez
    Robert

    • Bonjour,
      Si vous avez téléchargé l'archive ZIP, il suffit normalement de dézipper (pour obtenir un dossier "wp-advanced-search" avec des fichiers dedans) puis de couper/coller l'ensemble du dossier dans le répertoire "wp-content/plugins/" de WordPress. Ensuite, allez dans votre back-office de WordPress, dans "Extensions" et activer l'extension.
      Si vous n'y arrivez pas, la solution la plus simple est peut-être d'installer et d'activer l'extension via le back office, en ajoutant l'extension (faites une recherche avec son nom, ça devrait suffire). ;-)
      J'espère que cela vous aidera.

  • Robert dit :

    Mathieu bonsoir,
    C'est justement cette 2ème solution (activation via le back-office en faisant « ajouter une extension » puis en appelant l'archive-zip de votre plugin préalablement téléchargée et en cliquant sur « installer ») qui ne marche pas. J’essaierai l’autre (plus délicate car nécessitant de faire du FTP) mais je profite de notre dialogue pour vous demander, avant de le faire, si votre plugin offre ce que je recherche : lorsqu’un plugin de recherche fait son office, il ouvre une liste de résultats avec le terme recherché, mais si l’on clique sur un des résultats, on entre dans la page concernée et souvent, là, on n’a plus rien et il faut faire un bête Ctrl + F pour trouver le terme concerné. J’aimerais personnellement que le terme recherché soit mis (fortement) en évidence dans la page où il se trouve et ceci pour toutes ses occurrences : qu’en est-il du votre ?
    J’espère m’être bien fait comprendre et vous remercie de bien vouloir me répondre…
    R.

    • Bonjour,
      C'est très étonnant si la méthode (2e solution) ne fonctionne pas, surtout si ça plante à l'installation, et non à l'activation. Est-ce que cela vous arrive pour d'autres plugins déjà ? Il peut y avoir des raisons toutes bêtes à ça, indépendantes du plugin en lui-même. Peut-être que votre limite d'upload du serveur est trop basse (2Mo ou 8Mo), vous pouvez vérifier cela facilement en allant dans "Médias" et en cliquant sur ajouter, vous obtiendrez une phrase du genre "Taille de fichier maximale pour le téléversement : xx MB.". Il suffira de vérifier le "xx". Si votre limite est trop basse, ça peut expliquer pourquoi le plugin ne peut pas s'installer, car il pèse plus de 4 Mo par exemple (ça reste petit, mais par défaut, les serveurs sont souvent à 2 Mo max...). L'autre problème provient peut-être de la désactivation de cURL sur votre serveur, c'est ce qui est utilisé par WordPress pour télécharger les plugins et thèmes.
      Si vous arrivez habituellement à télécharger d'autres thèmes ou plugins et que la limite en Mo est suffisante, alors j'avoue ne pas trop comprendre le problème (hormis un blocage par .htaccess sur le serveur, ce ne serait pas logique).
      Concernant le plugin, la 1re méthode peut sûrement contourner le problème d'installation, donc il faut tenter ça.

      Mon moteur de recherche ne fonctionne que pour la partie recherche, et non pour les contenus internes des résultats recherchés. Cela s'explique par des raisons purement techniques. Ce serait extrêmement lourd et lent de devoir effectuer un traitement de tous les contenus des résultats recherchés à chaque recherche, pour mettre en exergue les termes recherchés. Aucun outil à ma connaissance ne le fait d'office, cela demanderait un développement spécifique, et comme je vous l'ai indiqué, lourd et coûteux en performance. :-(

  • Robert dit :

    Mathieu,
    Suivi des contacts avec vos correspondants : 10 sur 10 ! Bravo et 1000 mercis ! Très sympa.
    Je vous réponds donc :
    Non, la taille limite de téléchargement de votre archive Zip n'est pas en cause (vérifié en suivant votre conseil : media - ajouter --> Taille limite : 128 Mo ! Largement suffisant !) et tous les autres plugins se sont toujours bien installés. J'essaierais bien l'autre méthode (ajout de votre code à wp-content/plugins) mais en fait je dois vous avouer que j’ai continué de chercher et un plugin de recherche très célèbre (dont je ne citerai pas le nom pour ne pas vous faire concurrence) offre la Mise en évidence des occurrences trouvées dans les titres, les documents et les commentaires ! J’ai essayé et ça marche. Si vous voulez en parler en privé, écrivez-moi sur le mail que vous avez. Cependant pour préserver l’intérêt de votre plugin, je signale à tous qu’il peut être complété par un autre plugin que j’ai trouvé, offrant la mis en surbrillance des occurrences trouvées au sein des pages. Il s’agit de Highlight Search Terms, œuvre d’un solitaire : il peut donc être utilisé en complément au votre !
    Encore merci et bravo pour votre créativité
    R.

    • Bonjour,
      Et bien l'essentiel est que vous ayez trouvé votre bonheur, surtout si l'autre plugin arrive à faire la mise en évidence des occurrences trouvées partout dans les contenus (j'ose imaginer les calculs que ça engendre en amont de chaque recherche, sauf s'ils font ça en Javascript en "surcouche", sans entrer dans les détails techniques --> Rien qu'en le disant ça vient de me donner une idée en effet ^^).
      Nous sommes tous des contributeurs au projet WordPress, par le biais de plugins, de thèmes, de traductions (...). Notre travail est souvent open source (même si de plus en plus de plugins vendent du support), je n'ai donc aucun problème avec la concurrence, rassurez-vous. J'avais codé mon moteur en PHP, puis que je me suis dit que ça pourrait servir, donc j'en ai fait un plugin WordPress plus évolué. C'est du temps offert pour la bonne cause ! ;-)
      Merci à vous, et bon site ! :-)

  • Robert dit :

    Très bon esprit, Mathieu ! Merci
    A +

  • Déposer un commentaire

    Répondre à ultime Annuler la réponse

    L'adresse de messagerie ne sera pas publiée.* Champs obligatoires