Présenter tous les programmes immobiliers neufs disponibles à l’achat en France : voilà la mission du site Les Programmes Neufs.
Dans ce cadre, j’ai eu le plaisir de développer une extension WordPress avancée ayant pour objectif :
- de lire quotidiennement des flux de biens immobiliers (en interrogeant une API externe) et de les traiter intelligement pour importer et mettre à jour les programmes et leurs lots,
- de mettre en place une page d’archives listant les biens immobiliers sur une carte Mapbox avec système de recherche intelligent en AJAX,
- de créer le template des pages de programme unique présentant les détails de ce dernier et de tous les lots le composant,
- de développer un formulaire sur-mesure pour demander plus d’informations sur la page d’un programme, avec traitement AJAX.
Je ne veux pas mettre un avis trop positif par peur qu’il manque de temps pour moi à l’avenir mais Pierre à fait preuve d’un grand sérieux, d’une grande efficacité et en plus d’une extreme rapidité. Toujours en avance sur les délais annoncés et un travail vraiment impeccable. Je le recommande vivement !
Alexandre Boublil, fondateur de LesProgrammesNeufs.fr
Un site WordPress pour la recherche d’immobilier neuf en France
Une extension WordPress a dû être développée afin de fournir toute la logique métier requise par ce site. Avant la présentation des contenus, j’ai développé un CRON spécifique pour l’automatisation de l’import de données via une API (Gridky).
Import de données automatisé via API Gridky
Chaque nuit, un CRON se déclenche et a pour responsabilité d’interroger une API disponibilisant publiquement une liste de biens neufs en France. Le processus d’import est pensé pour être performant et éviter les goulots d’étranglement. Il fonctionne ainsi :
- Une première route d’API récupère un lot de X pages de résultats des programmes immobiliers d’une catégorie spécifique (loi Pinel, TVA réduite, etc.). D’autres lots de X pages de résultats sont programmés à l’import pour être exécutés quelques secondes plus tard, jusqu’à ce que toutes les pages de résultats aient été récupérées et analysées.
- Le traitement de chaque programme est décalé pour être exécuté de manière asynchrone (grâce à l’excellente librairie Action Scheduler). Ainsi, quelques secondes plus tard, le programme est importé dans un post de CPT WordPress créé, ou mis à jour (si existant). Ses attributs (nom, ville, etc) sont sauvegardées et l’API Geo.API.Gouv.fr est interrogée pour sauvegarder toutes les appartenances géographiques liées à l’adresse du programme (département, région). Ces appartenances sont assignées au post via une taxonomie spécifique afin de pouvoir facilement regrouper les entités par ville, département et région de manière native dans WordPress.
- Une autre tâche asynchrone s’exécute ensuite afin de récupérer tous les lots en vente composant ce programme immobilier. Ces lots sont créés ou mis à jour dans des posts de CPT WordPress enfants du programme parent, permettant ainsi une structure hiérarchique des données simple mais efficace.
Petit point technique crucial pour assurer une bonne performance côté front-end lors de la recherche utilisateur : chaque import d’un lot (enfant) déclenche le calcul d’attributs spécifiques et leur sauvegarde en métadonnées sur le programme parent. On sauvegarde ainsi :
- prix minimum et maximum des lots du programme,
- nombre minimum et maximum de chambres,
- surface minimum et maximum des lots en vente, etc.
Ces valeurs étant utilisées lors d’une recherche utilisateur sur le site public, il est plus intelligent de les avoir à disposition sur les posts parents (programmes) recherchés afin d’optimiser la WP_Meta_Query
déclenchée à chaque recherche filtrée. On évite ainsi une recherche sur parents et enfants et on assure ainsi une expérience utilisateur réactive lors d’une recherche filtrée.
Module d’affichage des résultats sur une carte Mapbox
Pour les visiteurs du site, une page de recherche affiche une carte dynamique des programmes immobiliers neufs par ville, département ou région. La carte est propulsée par la librairie JavaScript Mapbox et des marqueurs cliquables permettent d’afficher un extrait des informations d’un programme immobilier avant d’accéder à sa page complète. Une intégration JavaScript sur-mesure a donc été nécessaire.
Un panneau latéral permet à l’utilisateur de rechercher des biens en indiquant une position géographique (ville, département, région). La recherche en AJAX utilise une route d’API Rest WordPress développée sur-mesure qui renvoie un listing de résultats rapidement, pour une expérience-utilisateur optimale.
Enfin, quelques filtres permettent aux utilisateurs d’affiner leur recherche : c’est là que les métadonnées « statistiques » pré-calculées sur chaque programme prennent tout leur sens, car ces requêtes peuvent cumuler plusieurs facettes (exemple : biens à Paris de 3/4 ou 5 pièces entre 200 000 et 500 000 €). La performance liée à une recherche filtrée est donc optimale grâce à un fin usage de la WP_Query
et d’un système de cache (transient) à courte durée.
Auto-complétion avec suggestions intelligentes et URLs référençables
La structure de données mise en place (CPT et taxonomie) permet de profiter d’URLs propres pour accéder à des recherches ciblées par ville, département et région. Ces URLs sont référençables par les moteurs de recherche et améliorent le référencement du site. Prenons un exemple :
- /programmes/centre-val-de-loire/ liste les biens en région Centre Val-de-Loire
- /programmes/37-indre-et-loire/ liste les biens dans le département Indre-et-Loire
- /programmes/tours/ liste les biens dans la ville de Tours.
Pour accéder à ces URLs, la page d’accueil du site présente un champ de recherche en apparence simple mais qui propose un système de suggestions/d’autocomplétion intelligent. Lorsqu’un utilisateur exécute une recherche dans ce champ, une requête AJAX va demander au serveur WordPress une liste de suggestions à afficher. Cette liste comprend :
- soit des villes, départements et régions correspondant à la demande de l’utilisateur et qui existent dans la taxonomie « Géographie » du site. Une fois une suggestion de ce type cliquée, l’utilisateur est renvoyé vers une URL propre (décrite ci-dessus).
- soit des « suggestions géographiques » récupérées après interrogation de l’API de geocoding Mapbox. Une telle suggestion cliquée renvoie l’utilisateur vers la carte Mapbox centrée sur son choix et qui affichera tous les biens présents dans un rayon autour de ce point (URL de type
?lat=X&long=Y
).
Grâce à cette logique, on favorise les URLs propres associées à notre taxonomie (ville/département/région). En cas de recherche locale infructueuse, on profite alors de résultats plus larges dans un rayon autour d’un point géolocalisé par Mapbox.
Développement d’un formulaire front-end de prise de contact
Un particulier intéressé par un bien immobilier peut, sur la page du programme, remplir un formulaire de demande de renseignements.
Créé sur-mesure, ce formulaire communique en AJAX avec WordPress afin d’enregistrer la demande et d’envoyer une notification aux administrateurs du site.
Au final, de nombreux blocs natifs de WordPress (types de contenu, taxonomies, API Rest, CRON, Action Scheduler, transients, etc.) sont intelligement utilisés afin de créer cet annuaire complexe avec un niveau de performance optimal.