Maison >Tutoriel CMS >WordPresse >Comment ajouter une recherche avancée à votre site WordPress
<span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span> </span><span><span><span><fieldset</span>></span> </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span> </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span> </span><span><span><span></fieldset</span>></span> </span><span><span><span></form</span>></span></span>Il n'y a rien de mal à cela et je pensais que c'était la seule option pour de nombreuses années. Cependant, des requêtes plus avancées sont possibles sans l'aide de plugins (bien que beaucoup soient disponibles). Au fond du noyau WordPress, l'application analyse plusieurs autres paramètres de requête et les utilise pour renvoyer un ensemble plus ciblé de résultats de recherche. Il existe une documentation rudimentaire qui répertorie les noms de paramètres:
<span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span> </span><span><span><span><fieldset</span>></span> </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span> </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span> </span><span><span><span></fieldset</span>></span> </span><span><span><span></form</span>></span></span>Notre formulaire de recherche peut permettre à l'utilisateur d'affiner sa recherche vers des catégories spécifiques:
http://yoursite.com/?s=search+term&category_name=kittensSi vous préférez répertorier toutes les catégories, ajoutez le code suivant entre le
<span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span> </span><span><span><span><fieldset</span>></span> </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span> </span><span><span><span><select</span> name<span>="category_name"</span>></span> </span><span><span><span><option</span> value<span>=""</span>></span>all categories<span><span></option</span>></span> </span><span><span><span><option</span> value<span>="kittens"</span>></span>cute kittens<span><span></option</span>></span> </span><span><span><span><option</span> value<span>="puppies"</span>></span>adorable puppies<span><span></option</span>></span> </span><span><span><span></select</span>></span> </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span> </span><span><span><span></fieldset</span>></span> </span><span><span><span></form</span>></span></span>
<span><span><?php </span></span><span><span>// generate list of categories </span></span><span><span>$categories = get_categories(); </span></span><span><span>foreach ($categories as $category) { </span></span><span> <span>echo '<option value="', $category->slug, '">', $category->name, "</option>\n"; </span></span><span><span>} </span></span><span><span>?></span></span>Votre recherche pourrait donc limiter les résultats à certaines balises, par exemple
http://yoursite.com/?s=search+term&tag=cockroachDe même, vous pouvez générer une liste de toutes les balises pour le champ Select:
<span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span> </span><span><span><span><fieldset</span>></span> </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span> </span><span><span><span><select</span> name<span>="tag"</span>></span> </span><span><span><span><option</span> value<span>=""</span>></span>any tag<span><span></option</span>></span> </span><span><span><span><option</span> value<span>="cockroach"</span>></span>cockroaches<span><span></option</span>></span> </span><span><span><span><option</span> value<span>="snake"</span>></span>snakes<span><span></option</span>></span> </span><span><span><span></select</span>></span> </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span> </span><span><span><span></fieldset</span>></span> </span><span><span><span></form</span>></span></span>
<span><span><?php </span></span><span><span>// generate list of tags </span></span><span><span>$tags = get_tags(); </span></span><span><span>foreach ($tags as $tag) { </span></span><span> <span>echo '<option value="', $tag->slug, '">', $tag->name, "</option>\n"; </span></span><span><span>} </span></span><span><span>?></span></span>Notez que j'ai utilisé un paramètre de tableau PHP nommé TagList . Vous pouvez utiliser n'importe quel nom autre que ceux déjà réservés par WordPress (voir la liste ci-dessus). Nous pouvons désormais intercepter une soumission de recherche dans le fichier fonctions.php de notre thème WordPress. La fonction Advanced_Search_Query détecte si une recherche est active alors définit le paramètre WP_Query Tag_Slug__ et en conséquence.
<span><span><span><form</span> method<span>="get"</span> action<span>="<span><?php bloginfo('url'); ?></span>"</span>></span> </span><span><span><span><fieldset</span>></span> </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span> </span><span><span><span><p</span>></span>Refine search to posts containing chosen tags:<span><span></p</span>></span> </span><span><span><?php </span></span><span><span>// generate list of tags </span></span><span><span>$tags = get_tags(); </span></span><span><span>foreach ($tags as $tag) { </span></span><span> <span>echo </span></span><span> <span>'<label>', </span></span><span> <span>'<input type="checkbox" name="taglist[]" value="', $tag->slug, '" /> ', </span></span><span> <span>$tag->name, </span></span><span> <span>"</label>\n"; </span></span><span><span>} </span></span><span><span>?></span> </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span> </span><span><span><span></fieldset</span>></span> </span><span><span><span></form</span>></span></span>Enfin, nous utilisons le Hook Action Pre_get_Posts pour exécuter notre fonction Advanced_Search_Query avant l'exécution d'une requête:
<span>// advanced search functionality </span><span>function advanced_search_query($query) { </span> <span>if($query->is_search()) { </span> <span>// tag search </span> <span>if (isset($_GET['taglist']) && is_array($_GET['taglist'])) { </span> <span>$query->set('tag_slug__and', $_GET['taglist']); </span> <span>} </span> <span>return $query; </span> <span>} </span> <span>}</span>L'ajout d'installations de recherche avancées à WordPress est remarquablement facile, mais peu de développeurs se rendent compte que c'est possible… peut-être parce que la documentation et les exemples sont un peu clairsemés . Je l'ai découvert par accident, j'espère donc que vous trouverez ce code utile dans votre prochain projet WordPress.
La personnalisation des résultats de recherche dans WordPress peut être obtenue en utilisant la classe WP_Query. Cette classe vous permet de définir des paramètres spécifiques pour adapter vos résultats de recherche. Par exemple, vous pouvez définir des paramètres pour rechercher uniquement dans les titres de publication, exclure certains types de publication ou même rechercher dans des champs personnalisés. Vous pouvez également utiliser des plugins comme SearchWP qui offrent des options de personnalisation de recherche avancées.
Oui, les balises peuvent considérablement améliorer les résultats de recherche dans WordPress. En utilisant la fonction get_the_tags (), vous pouvez récupérer les balises associées à un post particulier. Cela peut être utilisé pour créer une expérience de recherche plus raffinée, permettant aux utilisateurs de rechercher des publications avec des balises spécifiques.
Le paramètre de requête de recherche dans WordPress peut être modifié à l'aide du filtre "Query_Vars". Cela vous permet de modifier le paramètre «S» par défaut en quelque chose de plus spécifique à vos besoins. Par exemple, vous pouvez le modifier en 'search_term' pour rendre vos URL plus conviviales.
WP_Query est une classe dans WordPress qui vous permet de créer personnalisé requêtes et boucles. Il fournit de nombreux paramètres que vous pouvez utiliser pour personnaliser vos requêtes, telles que le type de poste, la catégorie, la balise, l'auteur, etc. Cela en fait un outil puissant pour créer des fonctionnalités de recherche avancées.
L'exclusion de certains types de post à partir des résultats de recherche peut être effectué en utilisant le ' PRE_GET_POSTS Action Hook en conjonction avec la classe WP_Query. Vous pouvez définir le paramètre 'Post_Type' sur un tableau des types de publication que vous souhaitez inclure dans les résultats de recherche, excluant efficacement tous les autres.
Oui, vous pouvez rechercher dans des champs personnalisés dans WordPress en utilisant le paramètre 'meta_query' dans WP_Query. Cela vous permet de spécifier une touche et une valeur de champ personnalisées, et de retourner les publications qui correspondent à ces critères.
Améliorer la fonctionnalité de recherche dans WordPress peut être réalisée En utilisant des plugins comme SearchWP, Re pertinentssi ou Ajax Search Pro. Ces plugins offrent des fonctionnalités de recherche avancées telles que la correspondance partielle, les mots clés engendrés et la pondération de recherche, offrant une meilleure expérience utilisateur.
Oui, vous Peut créer un formulaire de recherche dans WordPress sans plugin en utilisant la fonction get_search_form (). Cette fonction génère le HTML pour un formulaire de recherche, que vous pouvez personnaliser en fonction de vos besoins.
La requête de recherche peut être affichée dans WordPress en utilisant La fonction get_search_query (). Cette fonction récupère la chaîne de requête de recherche et peut être utilisée pour afficher le terme de recherche sur votre page de résultats de recherche.
Oui, vous pouvez limiter Le nombre de résultats de recherche dans WordPress en utilisant le paramètre 'Posts_per_page' dans WP_Query. Cela vous permet de spécifier le nombre de messages à afficher par page, limitant efficacement le nombre de résultats de recherche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!