J'ai construit un thème pour un concessionnaire automobile. Chaque voiture est un type de poste personnalisé ("véhicule") et possède environ 12 champs personnalisés avec des éléments tels que la marque, le modèle, le kilométrage, le type de carburant, etc., etc.
Donc, fondamentalement, sur la page d'accueil, je veux un formulaire de recherche qui a des listes déroulantes pour Make & Model et contient toutes les marques ou modèles disponibles.
Je veux également qu'il ait 2 options pour l'année, afin que l'utilisateur final puisse sélectionner "2006" et "2012" et les résultats de la recherche contiennent tous les véhicules avec l'année entre ces deux nombres.
Existe-t-il un plugin qui peut le faire ??
Merci pour toute aide .. cela me rend fou depuis des heures !!!!
la source
Réponses:
Étape 1
Commencez par créer un formulaire de recherche avancée avec lequel vous souhaitez que votre utilisateur interagisse avec le site Web, et enregistrez-le avec un nom (c'est-à-dire que je l'ai enregistré sous
advanced-searchform.php
- mais ne l'enregistrez pas avecsearchform.php
alors il remplacera le formulaire de recherche par défaut de WordPress ):Appelez ensuite le formulaire dans votre modèle comme suit:
Maintenant, votre formulaire de recherche est prêt, et vous pouvez maintenant utiliser le formulaire de recherche et prendre la saisie de l'utilisateur dans l'URL.
Étape 2
Ce dont vous avez juste besoin est: interroger la base de données et interroger le type de publication et ses champs personnalisés selon la requête de recherche . N'oubliez pas que votre requête de recherche est désormais l'URL que vous avez obtenue après l'envoi du formulaire. Demandez maintenant à WordPress de charger votre page de résultats de recherche personnalisée lorsque le formulaire est soumis. Placez la fonction suivante dans votre
functions.php
afin qu'elle active votre modèle de recherche personnalisé au lieu de la valeur par défautsearch.php
:J'ai apporté le code quelque part de WPSE (j'ai oublié la racine), mais il y a une controverse en utilisant le code ci-dessus. Mais cela fonctionne réellement ( excuse boiteuse bien sûr ).
Cochez une autre manière suggérée par @GM.
Étape 3
Créez un nouveau fichier et enregistrez-le avec
advanced-search-result.php
(car nous avons utilisé ce nom dansfunctions.php
) et maintenant vous êtes libre - évidemment. Le concept est:WP_Query()
(si votre requête est complexe alors utilisez la$wpdb
requête),Un échantillon peut être:
Alors, voici votre dernière chose. Mais il y a encore de nombreux défis:
$wpdb
une requête SQL personnalisée pour des résultats de recherche complexes et ce sera purement MySQL - WordPress n'a rien là-bas.page.php
(ousearch.php
) et créer cette page sur cette base.Donc, vous avez l'idée, maintenant c'est à votre tour d'explorer et de découvrir le chemin . Rappelez-vous, le chemin de chacun est différent. Faites le vôtre, afin que je puisse vous suivre. :)
la source
WP_Query()
paramètre de champ personnalisé et bouclez le résultat pour afficher le<option>
s.pre_get_posts
crochet et non d'une boucle secondaire.Bien que la réponse de @ MayeenulIslam puisse fonctionner, je pense que la bonne façon de faire une recherche avancée consiste à utiliser le
pre_get_posts
crochet d'action.Étape 1: Formulaire de recherche
Cette étape égale à l' étape 1 dans l'autre réponse, juste changé
id
duname
champ (<input type="text" ...>
utilisé pour la recherche de « s » , il sera utilisé directement pour que le champ de recherche. Enregistrer ce code dansadvanced-searchform.php
sous votre dossier thématique. Ensuite, l' utilisationget_template_part( 'advanced', 'searchform' );
de chargez-le où vous voulez qu'il apparaisse dans votre thème:Étape 2: ajouter des filtres à la requête de recherche
Étape 3: Modèles (facultatif)
Avec cette méthode, le modèle de recherche par défaut de WordPress sera utilisé pour filtrer les résultats sans avoir besoin d'une requête secondaire. Si vous souhaitez utiliser un modèle différent pour la recherche avancée, vous pouvez utiliser le
template_include
filtre. Par exemple, si vous souhaitez utiliser leadvanced-search-template.php
fichier comme modèle pour les résultats du formulaire de recherche avancée:la source