Moteur de recherche

Le plugin wordpress intègre nativement de nombreuses fonctionnalités permettant de rechercher des annonces immobilières depuis notre API.

Critères de recherche

Le plugin permet d'intégrer nativement la liste suivante de critères de recherche :

CritèreCatégorieDescription
agencyGénéralListe des identifiants gedeon d'agences
bedroomsGénéralNombre de chambres
extendsGénéralExtension kilométrique
favoriteGénéralAnnonce "Coup de coeur"
is_newGénéralAnnonce neuve
is_oldGénéralAnnonce ancienne
localizationGénéralLocalité(s)
mailGénéralEmail de contact
mandateGénéralRéférence de mandat (contenu)
search_mandateGénéralRéférence de mandat (valeur exacte)
max_priceGénéralPrix maximum
min_priceGénéralPrix minimum
min_surfaceGénéralSurface minimum
max_surfaceGénéralSurface maximum
minterrainsurfaceGénéralSurface du terrain minimum
price_rangeGénéralInterval de prix
prestigeGénéralAnnonce "Prestige"
roomsGénéralNombre de pièces
quartierGénéralQuartier
sectorGénéralSecteur
sleepsGénéralNombre de lits
sortGénéralTri à appliquer
transactionGénéralTransaction d'annonce
typeGénéralType d'annonces
meubleGénéralMeublé
exclusiveGénéralAnnonce "Exclusive"
monthly_annuityViagerRente mensuelle
occupiedViagerBien occupé
nb_personsViagerNombre de têtes
forward_saleViagerA terme
forward_durationViagerDurée du terme
min_age_tete_1ViagerAge de la première tête
max_age_tete_1ViagerAge de la seconde tête
min_rente_mensuelleViagerRente mensuelle minimum
max_rente_mensuelleViagerRente mensuelle maximum
extrasGénéralChamps extras

Champs extras

Les champs extras sont des informations libres stockées dans les annonces. Elles sont accessibles en tant que critère de recherche.

ClefNomTypeValeurs possibles
addressAdressetext
arrondissementArrondissementtext
nb_etagesNbre. d'étagesint
etageÉtage du bienspecific
type_constructionType de constructiontext
nb_murs_mitoyensNb. de murs mitoyensint
meubleMeublébool
ascenseurAscenseurbool
nb_chambresNbre. de chambresint
nb_piecesNb. de piècesint
nb_sdbNb. de salles de bainint
nb_sdeNb. de salles d'eauint
nb_wcNb. de WCint
wc_separesWC séparésbool
sous_solSous-solbool
verandaVérandabool
salle_a_mangerSalle à mangerbool
salonSalonbool
saunaSaunabool
grenierGrenierbool
balconBalconbool
terrasseTerrassebool
garageGaragebool
places_de_garagePlaces de garageint
parkingParkingbool
nb_parkingsNb. Parkingint
boxBoxbool
stationnementStationnementtext
type_parkingType parkingtextIntérieur, Extérieur, Box, Sous-sol, Visiteurs
caveCavebool
courCourbool
escalierEscalierbool
facadeFaçadetext
gardienGardienbool
handicapesAccès handicapésbool
hauteur_sous_plafondHauteur Sous Plafondint
sous_compromisSous compromisbool
duplexDuplexbool
triplexTriplexbool
souplexSouplexbool
loftLoftbool
styleStyletext
labelLabeltext
etat_generalÉtat generaltextNeuf, Entièrement rénové, Excellent, Très Bon, Bon, Habitable, A rafraîchir, A rénover
etat_exterieurÉtat extérieurtext
travauxTravauxtext
travaux_a_prevoirTravaux à prévoirbool
refait_a_neufRefait à neufbool
annee_constructionAnnée de constructionyear
annee_renovationAnnée de rénovationyear
annee_chaudiereAnnée chaudièreyear
surface_habSurface habitablesurface
shonS.H.O.N.surface
cosC.O.S.float
surface_carrezSurface carrezsurface
surface_amenageableSurface aménageablesurface
surface_totaleSurface totalesurface
surface_constructibleSurface constructiblesurface
surface_terrainSuperficie terrainsurface
surface_jardinSurface du jardinsurface
surface_terrasseSurface terrassesurface
surface_balconSurface du balconsurface
surface_loggiaSurface de la loggiasurface
surface_sejourSurface du séjoursurface
surface_cuisineSurface cuisinesurface
surface_bureauSurface du bureausurface
surface_annexesSurface des annexessurface
surface_divisibleSurface Divisiblebool
info_surfaceInformation surfacetext
statut_negoStatut du négociateurtextAgent immobilier, Salarié, VRP, Agent commercial
coproprieteCopropriétébool
copropriete_nb_lotsNombre de lots de la copropriétéint
quote_part_annuelleMoyenne de la quote part(an)money
syndic_procedure_alerteSyndic sous procédure d'alertebool
syndic_sous_adminSyndic sous administration provisoirebool
syndic_detail_procedureDétail de la procéduretext
porte_blindeePorte blindéebool
chauffageChauffagetextGaz, Electrique, Fuel, Solaire, Individuel, Collectif
chemineeCheminéebool
poele_boisPoêle à boisbool
climatisationClimatisationbool
visiophoneVisiophonebool
digicodeDigicodebool
double_vitrageDouble vitragebool
fosse_septiqueFosse septiquebool
tout_a_l_egoutTout-à-l'égoutbool
videophoneVideophonebool
alarmeAlarmebool
cable_tvCâble TVbool
televisionTélévisionbool
connexion_internetConnexion internetbool
telephoneTéléphonebool
placardsPlacardsbool
interphoneInterphonebool
eau_chaudeEau chaudetext
cuisineCuisinetextAménagée, Américaine, Américaine équipée, Coin cuisine, Equipée, Indépendante, Kitchenette, Vide
lave_vaisselleLave vaissellebool
lave_lingeLave lingebool
seche_lingeSèche lingebool
congelateurCongélateurbool
micro_ondesMicro-ondesbool
fourFourbool
chaise_bebeChaise bébébool
lit_bebeLit bébébool
jardin_privatifJardin privatifbool
jardin_non_privatifJardin non privatifbool
terrainTerraintextArboré, Clos, En pente, Plat, Paysagé
parc_arboreParc arborébool
jardinJardinbool
piscinePiscinebool
piscinablePiscinablebool
piscine_chauffeePiscine chaufféebool
piscine_hors_solPiscine hors solbool
barbecueBarbecuebool
salon_jardinSalon de jardinbool
portiquePortique pour enfantsbool
toboganToboganbool
jeux_enfantsJeux pour enfantsbool
velosVélosbool
orientationOrientationspecificNord, Sud, Est, Ouest, Nord/Est, Nord/Ouest, Sud/Est, Sud/Ouest
environnementEnvironnementtext
calmeCalmebool
vueVuetextCampagne, Citadine, Dégagée, Jardin, Mer, Montagne, Panoramique, Parc, Verdure, Village
sans_vis_a_visSans vis-à-visbool
lotissementLotissementbool
arret_metroArrêt métro prochetext
pluPlan Local d'Urbanismebool
dist_transportsDistance transports en communint
dist_commercesDistance commercesint
dist_crecheDistance crecheint
dist_ecolesDistance écolesint
dist_autorouteDistance autorouteint
transportTransportbool
ville_procheVille prochetext
proche_merProche merbool
dist_merDistance mer (mètres)int
proche_lacProche lacbool
dist_lacDistance lac (mètres)int
proche_skiProche skibool
dist_skiDistance piste (mètres)int
proche_tennisProche tennisbool
proche_foretProche forêtbool
proche_restaurantProche restaurantbool
proximiteProximitétext
proximite_transportsProximité transportstext
quartierQuartiertext
rue_pietonneRue piétonnebool
secteurSecteurtext
situationSituationtext
standingStandingbool
accrobrancheAccrobranchebool
activite_nautiqueActivités nautiquesbool
baignadeBaignadebool
balneoBalnéo thalassobool
canoeCanoé kayakbool
casinoCasinobool
cinemaCinémabool
discothequeDiscothèquebool
escaladeEscaladebool
equitationEquitationbool
golfGolfbool
museeMuséebool
parc_loisirParc de loisirsbool
patinoirePatinoirebool
petanqueTerrain de pétanquebool
piscine_municipalePiscine Municipalebool
randonneeRandonnéebool
ski_alpinSki alpinbool
ski_fondSki de fondbool
site_touristiqueSites touristiquesbool
tennisTennisbool
via_ferrataVia ferratabool
veloVélo routebool
voileVoilebool
vttVTTbool
ca_annee_1C.A. (Année N-1)money
ca_annee_2C.A. (Année N-2)money
ca_annee_3C.A. (Année N-3)money
murs_occupesMurs Occupésbool
prix_mursPrix des Mursmoney
prix_fdcPrix du Fond de commercemoney
activite_actuelleActivité actuelletext
activites_autoriseesActivités autoriseestext
activites_refuseesActivités refuséestext
longueur_vitrineLongueur vitrineint
hauteur_vitrineHauteur vitrineint
capital_societeCapital Sociétémoney
droit_au_bailDroit au bailmoney
bureau_vente_addrAdresse bureau de ventetext
bureau_vente_cpCP bureau de ventetext
bureau_vente_villeVille bureau de ventetext
bureau_vente_horairesHoraires bureau de ventetext
bureau_vente_tel2Tél. bureau de ventetext
bureau_vente_telTél2. bureau de ventetext
bureau_vente_faxFax bureau de ventetext
constructeurConstructeurtext
livraisonLivraisontext
nb_lotsNb Lotsint
nb_lots_totalNb Lots Totalint
nom_programmeNom du programmetext
slogan_programmeSlogan du programmetext
nom_vendeurNom Vendeurtext
prix_m2Prix au m²money
prix_minPrix minimummoney
prix_moyenPrix moyenmoney
prix_maxPrix maximummoney
surface_minSurface minimumsurface
surface_moyenneSurface moyennesurface
surface_maxSurface maximumsurface
nb_pieces_minNb. de pièces minimumint
nb_pieces_maxNb. de pièces maximumint
url_programmeUrl Programmetext
etat_avancementÉtat d'avancementtextAvant-première, Nouvelle réalisation, Commercialisation, Lancement, Travaux en cours, Livraison immédiate, Dernières opportunités
prix_maisonPrix de la maisonmoney
prix_terrainPrix du terrainmoney
taxe_fonciereTaxe foncièremoney
taxe_habitationTaxe habitationmoney
chargesChargesmoney
depot_garantieDépôt de garantiemoney
honorairesHonorairesmoney
prix_hors_honorairesPrix hors honoraires acquéreurmoney
pourcentage_honorairesPourcentage des honoraires acquéreurspecific
honoraires_a_charge_deHonoraires à charge detextacquéreur, vendeur, acquéreur et vendeur
reglement_chargesRèglement des chargestextprovisionnel, forfaitaire, remboursement
honoraires_etat_des_lieuxHonoraires état des lieuxmoney
complement_loyerComplément de loyermoney
url_baremeURL du barême des honorairestext
frais_diversFrais diverstext
prix_mobilierPrix du mobiliermoney
zone_anruZone ANRUtext
nb_personnesNombre de personnesint
duree_minDurée minimale du séjour (en jours)int
chauffage_inclusChauffage inclusbool
animauxAnimaux acceptésbool
non_fumeurNon fumeurbool
loc_drapsLocation drapsbool
loc_serviettesLocation serviettesbool
menage_fin_sejourPossibilité ménagebool
date_fin_bailDate de fin du baildate
date_parutionDate de parutiondate
date_debut_mandatDate de début de mandatdate
date_fin_mandatDate de fin de mandatdate
date_dispoDate disponibilitéspecific
libre_leLibre ledate
libreLibrebool
occupeOccupébool
type_occupationType d'occupationtext
rente_mensuelleRente mensuellemoney
valeur_venaleValeur vénalemoney
a_termeÀ termebool
duree_termeDurée du terme (années)int
nb_tetesNombre de têtesint
sexe_tete_1Sexe tête 1textFemme, Homme
age_tete_1Âge tête 1int
sexe_tete_2Sexe tête 2textFemme, Homme
age_tete_2Âge tête 2int
investissementPour investissementbool
mesures_fiscalesMesures fiscalestextPLS, LMNP, Censi-Bouvard, Duflot, Pinel, ANRU, PTZ+, TVA réduite, TVA 5.5%, TVA 7%, Démembrement, Malraux, Nue-propriété, Monuments Historiques, Résidence Principale
dpe_conso_enValeur DPEfloat
dpe_conso_en_lettreClasse DPEspecific
dpe_dateDate du DPEdate
dpe_gesValeur GESfloat
dpe_ges_lettreClasse GESspecific
certificationsCertificationstextBBC, HQE, HPE, THPE, H&E, NF Logement, RT2005, RT2012, FPC, VIVRELEC, FPI, EDF Bleu Ciel, PROMOTELEC, QUALIGAZ, DOLCE VITA
neg_tel_proNeg Tel Protext
neg_secteurNeg Secteurtext
neg_prenomNeg Prenomtext
neg_numNeg Numtext
neg_nomNeg Nomtext
neg_mailNeg Mailtext
neg_photoNeg Phototext
neg_short_textNeg Short Texttext
neg_long_textNeg Long Texttext
coup_de_coeurCoup de coeurbool
type_mandatType mandattext
urlUrltext
prix_semaine_bassePrix Semaine Basse Saisonmoney
prix_quinzaine_bassePrix Quinzaine Basse Saisonmoney
prix_mois_bassePrix Mois Basse Saisonmoney
prix_semaine_hautePrix Semaine Haute Saisonmoney
prix_quinzaine_hautePrix Quinzaine Haute Saisonmoney
prix_mois_hautePrix Mois Haute Saisonmoney
periodes_disponibilitesPeriodes Disponibilitestext
periodes_basse_saisonPeriodes Basse Saisontext
periodes_haute_saisonPeriodes Haute Saisontext
nb_couvertsNb Couvertsint
nb_lits_doublesNb Lits Doublesint
nb_lits_simplesNb Lits Simplesint

Localité

Le critère localization permet de filtrer les annonces basées sur une ville, un département, une région ou même plus simplement, un code postal. Ce champ supporte plusieurs valeurs (séparées par une virgule ,) :

localization = lyon-69000
localization = Lyon (69000)
localization = 69000
localization = lyon-69000,paris-75,auvergne-rhone-alpes

Transaction

La transaction représente un format d'annonce spécifique, destiné à des marchés différents :

TransactionDescription
SAnnonce en vente
RAnnonce en location
LAnnonce en viager
HLocation de vacances
OAnnonce vendue
CCession de bail
PProgramme neuf

Le champ transaction peut contenir chacune de ces valeurs, séparées par une virgule.

Type d'annonce

Il existe plusieurs types d'annonces, avec des formats différents :

Nom (anglais)Nom (français)Catégorie
bakeryboulangerieshop
bakery pastryboulangerie patisserieshop
barbarshop
bar hostelbar hotelshop
bar pmubar pmushop
bar pressbar presseshop
bar rapidobar rapidoshop
bar restaurantbar restaurantshop
bar restaurantbar-restaurantshop
bar tabacconistbar tabacshop
bar tabacconist pressbar tabac presseshop
bar tabacconist press lotobar tabac presse lotoshop
bar tabacconist press loto pmubar tabac loto pmushop
bourgeoise housemaison bourgeoisehouse
brasseriebrasserieshop
buildingimmeubleoffice
butcheryboucherieshop
parkingparkinggarage
castlechâteauhouse
farmfermehouse
chaletchalethouse
city housemaison de villehouse
clothe shopcommerce habillementshop
clothing shophabillementshop
commercial locallocal commercialshop
butchery delicatessenboucherie charcuterieshop
country housemaison de campagnehouse
delicatessencharcuterieshop
dry cleanerpressingshop
duplexduplexflat
flatappartementflat
floristfleuristeshop
furnished flatmeubléflat
garagegaragegarage
grocery presspresse alimentationshop
grocery tabacconisttabac alimentationshop
hair saloncommerce coiffureshop
hostelhôtelshop
hostel restauranthotel restaurantshop
housemaisonhouse
industrial locallocal industrielindustrial
industrial terrainterrain industrielindustrial
loftloftflat
marinamarinaflat
mechanics garagegarage mecaniqueshop
officebureauoffice
otherdiversother
pas de portepas de porteshop
pastrypatisserieshop
plateauplateauflat
press lotopresse lotoshop
press pmupresse pmushop
presspresseshop
press tabacconist loto pmutabac presse loto pmushop
press tabacconist lototabac presse lotoshop
propertypropriétéhouse
restaurantrestaurantshop
roomchambreflat
services shopcommerce servicesshop
shopcommerce diversshop
specific productproduit spécifiqueother
studiostudioflat
t1t1flat
t2t2flat
t3t3flat
t4t4flat
t5t5flat
t6t6flat
t7t7flat
tabacconist lototabac lotoshop
tabacconist's shoptabacshop
terrainterrainterrain
village housemaison de villagehouse
villavillahouse
groceryalimentationshop
cooking terminalterminal de cuissonshop
warehouseentrepôtindustrial
chocolate shopchocolaterieshop
grocery shopcommerce alimentaireshop
t6 and moret6 et plusflat
master's housemaison de maîtrehouse
town househôtel particulierhouse
mobil homemobil homehouse
bastidebastidehouse
agricultural landterrain agricoleterrain
activity localslocaux d'activitéindustrial
gîtegîteother
campingcampingother
bed and breakfastchambre d'hôteother

Vous pouvez chercher sur n'importe quelle valeur ici (anglaise ou française). Il est à noté qu'à partir du moment que vous souhaitez utiliser un type (et non pas une catégorie de type), vous devez préfixer la valeur avec s_ (subtype_{type}) comme le montre l'exemple ci-dessous :

type = s_gîte
type = s_activity locals
type = s_camping,s_mobil home
type = house,s_fleuriste
Attention : il existe beaucoup de type d'annonces, mais en réalité, très peu sont utilisés. Préférez utiliser les catégories de type le plus possible.

Catégorie de type

Comme le montre le tableau ci-dessus, les catégories de types permettent de recherche parmi tous les types associés :

  • house ou maison
  • flat ou appartement
  • terrain
  • shop ou boutique
  • office ou bureau
  • industrial ou industriel
  • other ou autre

La catégorie de type n'a pas besoin d'être préfixée.

Modification du moteur

Pour permettre des modifications dans le moteur de recherche, vous allez devoir récupérer le template de base dans votre thème :

-wp-content/plugins/lsi/modules/LsiAds/templates/lsi_searchgrid.php
+wp-content/themes/{theme}/LsiAds/lsi_searchgrid.php

Le moteur inclut de base une configuration par le plugin permettant d'afficher ou cacher certains champs. Mais ce comportement ne peut être exhaustif à partir du moment que vous avez des besoins spécifiques. Le moteur inclut par défaut les champs suivants :

  • transaction
  • type
  • localization
  • min_surface
  • max_surface
  • rooms
  • meuble
  • mandate
  • prestige

Dès lors que ces critères ne sont pas assez complets pour vous, vous aurez besoin de modifier le template afin d'en ajouter de nouveau.

Ajouter un critère

Le template par défaut inclut une bonne partie des critères de recherche, mais pas tous. Afin d'ajouter le support de nouveaux champs dans le moteur de recherche, il faut modifier le template. La plupart des champs sont des input, vous pouvez donc très facilement en ajouter de nouveau en suivant l'exemple ci-dessous :

lsi_searchgrid.php
<!-- Exemple d'un `input` -->
<input type="text" id="sg_{criteria}<?= $uniqId ?>" name="lsi_s_{criteria}" value="<?= $defaults[{criteria}] ?>" />

<!-- Exemple d'un `select` -->
<select id="sg_{criteria}<?= $uniqId ?>" name="lsi_s_{criteria}">
    <option value=""><?= __("Choisir", "lsi") ?></option>
    <option value="1" <?= $defaults[{criteria}] == 1 ? 'selected="selected"' : '' ?>>1</option>
    <option value="2" <?= $defaults[{criteria}] == 2 ? 'selected="selected"' : '' ?>>2</option>
</select>

Tous les name des champs doivent être préfixés par lsi_s_.

Exemple

Un client demande à ce qu'une liste de nombre de chambres (1 à 5) soit mise en place dans le moteur. Facile !

lsi_searchgrid.php
<select id="sg_bedrooms<?= $uniqId ?>" name="lsi_s_bedrooms">
    <option value=""><?= __("Nombre de chambres", "lsi") ?></option>
    <option value="1" <?= $defaults["bedrooms"] == 1 ? 'selected="selected"' : '' ?>>1</option>
    <option value="2" <?= $defaults["bedrooms"] == 2 ? 'selected="selected"' : '' ?>>2</option>
    <option value="3" <?= $defaults["bedrooms"] == 3 ? 'selected="selected"' : '' ?>>3</option>
    <option value="4" <?= $defaults["bedrooms"] == 4 ? 'selected="selected"' : '' ?>>4</option>
    <option value="5" <?= $defaults["bedrooms"] == 5 ? 'selected="selected"' : '' ?>>5</option>
</select>

Ajout d'un champ extra

Comme pour l'ajout d'un critère, vous pouvez ajouter le support des différents champs extras (soit configurable par l'internaute, soit par défaut).

lsi_searchgrid.php
<input type="checkbox" id="sg_extras_{key}<?= $uniqId ?>" name="lsi_s_extras[{key}]" value="{key}:{value}" <?= !empty($defaults["extras"][{key}]) ? "checked" : "" ?> />

// Exemple avec le champ extra `sauna`
<input type="checkbox" id="sg_extras_sauna<?= $uniqId ?>" name="lsi_s_extras[sauna]" value="sauna:1" <?= !empty($defaults["extras"]["sauna"]) ? "checked" : "" ?> />

Évidemment, ce code est à adapter en fonction des besoins. Si le champ extra est une chaîne de caractère ou qu'il doit se présenter sous la forme d'un select, il faut modifier la structure du champ.

lsi_searchgrid.php
<select id="sg_extras_nb_sdb<?= $uniqId ?>" name="lsi_s_extras[nb_sdb]">
    <option value=""><?= __("Nb de SdB", "lsi") ?></option>
    <option value="nb_sdb:1" <?= $defaults["extras"]["nb_sdb"] == "nb_sdb:1" ? 'selected="selected"' : '' ?>>1</option>
    <option value="nb_sdb:2" <?= $defaults["extras"]["nb_sdb"] == "nb_sdb:2" ? 'selected="selected"' : '' ?>>2</option>
    <option value="nb_sdb:3" <?= $defaults["extras"]["nb_sdb"] == "nb_sdb:3" ? 'selected="selected"' : '' ?>>3</option>
    <option value="nb_sdb:4" <?= $defaults["extras"]["nb_sdb"] == "nb_sdb:4" ? 'selected="selected"' : '' ?>>4</option>
    <option value="nb_sdb:5" <?= $defaults["extras"]["nb_sdb"] == "nb_sdb:5" ? 'selected="selected"' : '' ?>>5</option>
</select>

Vous pouvez aussi supporter plusieurs champs extras en une valeur, comme par exemple l'exemple suivant (annonce avec travaux et à rénover sous le même label :

lsi_searchgrid.php
<input type="checkbox" id="sg_extras_travaux<?= $uniqId ?>" name="lsi_s_extras[travaux]" value="travaux:1;a_renover:1" <?= !empty($defaults["extras"]["travaux"]) ? "checked" : "" ?> />

Mise en page

Le moteur de recherche est stylé de base par le module. Ceci peut potentiellement poser problème lors de l'implémentation de thème complexe. Le template lsi_searchgrid.php se veut très simple, n'hésitez pas à le modifier à votre guise et de déplacer les éléments ainsi que les conditions afin de correspondre à vos besoins.