GeoDirectory

Les défis du développement d'un site d'annuaires avec WordPress : Types de publications personnalisés et Advanced Custom Fields (ACF)

Qu'est-ce qu'un annuaire en ligne et pourquoi est-il important en 2023

Un site d'annuaire est une plateforme en ligne qui sert de répertoire complet et organisé d'informations sur des entreprises, des services ou des produits au sein d'un secteur ou d'une niche spécifique.

En offrant aux utilisateurs une source d'information pratique et centralisée, les sites d'annuaire les aident à prendre des décisions éclairées lorsqu'ils recherchent des produits, des services ou des entreprises qui répondent à leurs besoins.

À l'ère numérique, où les consommateurs s'appuient fortement sur Internet pour trouver des solutions et recueillir des informations, les sites d'annuaire jouent un rôle essentiel en mettant en relation les entreprises avec leur public cible.

Ces sites facilitent non seulement la découverte et la comparaison des offres de différentes entreprises par les utilisateurs, mais aident également les entreprises à accroître leur visibilité en ligne, à générer des leads et à améliorer leur crédibilité.

Face à une concurrence toujours plus vive dans l'espace numérique, disposer d'un site d'annuaire bien conçu et convivial est indispensable pour se démarquer et apporter de la valeur aussi bien aux utilisateurs qu'aux entreprises.

Utiliser les Custom Post Types et les Advanced Custom Fields de WordPress pour créer des sites d'annuaire

Si vous posez la question dans les groupes Facebook et les Subreddits centrés sur WordPress, la majorité vous répondra d'éviter les plugins dédiés et de construire votre site d'annuaire avec CPT UI (Custom Post Type) et ACF (Advanced Custom Fields).

Ce sont des plugins très puissants, utilisés par des millions d'utilisateurs. Cependant, lorsqu'il s'agit de développer un site d'annuaire avec WordPress, les Custom Post Types et les Advanced Custom Fields, le processus peut s'avérer complexe, frustrant et générer de nombreux coûts cachés.

Ces outils, bien que populaires et largement utilisés, nécessitent souvent une courbe d'apprentissage prononcée pour les développeurs afin d'atteindre un niveau de complexité suffisant, et peuvent entraîner des performances sous-optimales ainsi que des options limitées.

Laissez-moi vous expliquer pourquoi.

15 défis à relever pour obtenir les fonctionnalités souhaitées avec les Custom Post Types et ACF lors de la création d'un site d'annuaire :

  1. Créer un formulaire de soumission d'annonce en front-end pour ajouter et modifier des annonces avec paiements et expiration des annonces.
GeoDirectory est livré avec des formulaires d'ajout d'annonces en front-end intégrés

tandis qu'avec ACF vous pouvez facilement créer un formulaire en front-end de votre site pour ajouter ou modifier du contenu, accepter des paiements, proposer des fonctionnalités supplémentaires pour les annonces payantes par rapport aux annonces gratuites, autoriser les abonnements (paiements récurrents), et ainsi de suite, sera bien plus difficile à mettre en œuvre.

Si vous êtes un développeur aguerri qui préfère créer des solutions DIY, la seule option serait de coder sur mesure toutes les fonctionnalités supplémentaires.

Cela représenterait des semaines de travail (voire des mois s'il s'agit de la première fois que vous vous attaquez à une tâche similaire).

Sinon, cela peut être accompli en ajoutant des plugins payants supplémentaires.

Par exemple, la version pro du plugin Frontend Admin offrirait l'inscription des utilisateurs en front-end, la soumission d'annonces payantes et la modification.

Pour un site unique, ce plugin ajouterait 90 $/an à votre budget.

  1. Distinguer les annonces premium des annonces gratuites
Badge annonces en vedette GeoDirectory vs annonces gratuites

Si vous souhaitez vendre des annonces premium tout en proposant également des annonces gratuites, vous devez différencier les deux et apporter de la valeur ajoutée à l'option payante.

La meilleure option dont vous disposez est de créer un formulaire « soumettre une annonce » pour chaque type d'annonce et d'ajouter des fonctionnalités supplémentaires aux annonces premium sous forme de champs personnalisés additionnels.

Par exemple, l'annonce gratuite pourrait ne comporter que le nom de l'annonce, l'adresse, le numéro de téléphone et 1 photo.

Tandis que les annonces premium auraient plus de détails comme une adresse web, des comptes de réseaux sociaux, plus de photos, une description textuelle plus longue, un formulaire de contact, et ainsi de suite.

De plus, les annonces premium devraient être visuellement différentes, par exemple en affichant un badge « EN VEDETTE » ou une mise en page différente.

Ce n'est pas particulièrement difficile à réaliser, mais cela reste relativement chronophage.

Ce qui n'est pas aussi facile, c'est d'offrir une visibilité supplémentaire aux annonces premium par rapport aux annonces gratuites.

Par exemple, faire en sorte que les annonces premium apparaissent toujours en tête des pages d'archive de catégories.

Pour cela, vous devez maîtriser les requêtes WP et/ou le SQL.

  1. Gérer les abonnements aux annonces, les paiements récurrents échoués et les expirations d'annonces
Prix et paiements des annonces GeoDirectory

Que faire si le propriétaire d'une annonce ne la renouvelle pas en payant à nouveau ?

Ou dans le cas où vous configurez un abonnement avec un paiement récurrent, et le propriétaire de l'annonce annule l'abonnement, ou son moyen de paiement est refusé ?

Vous ne voulez certainement pas que l'annonce reste active ou que son propriétaire bénéficie des avantages d'une annonce premium sans payer, n'est-ce pas ?

Vous devez mettre en place un système pour soit rétrograder l'annonce, soit la faire expirer et changer son statut en non publié.

Tout cela nécessitera du code personnalisé et, pour développer quelque chose de ce genre, vous devez avoir une bonne connaissance des API des passerelles de paiement, et notamment des IPN (notifications de paiement instantané).

Vous devez également savoir comment configurer une tâche CRON, comment modifier les statuts des publications et comment transformer une annonce premium en annonce gratuite, sans perdre les données supplémentaires si possible.

  1. Développer une carte avec plusieurs épingles.
Des cartes GeoDirectory à chargement rapide avec des milliers d'annonces

Placer des emplacements sur une Google Map à l'aide d'Advanced Custom Fields et d'un peu de JavaScript est relativement simple.

La première étape consiste à géocoder les adresses de chaque annonce, et nous en parlerons davantage au point 6 de cette liste.

Ce qui n'est pas simple, c'est d'afficher un grand nombre d'emplacements. Surtout si vous transmettez à la carte plus qu'un simple titre d'annonce à afficher dans les marqueurs lorsqu'on clique dessus.

Si vous commencez à essayer d'afficher plus de quelques centaines d'annonces sur une carte (moins si le serveur n'est pas au top), la carte se chargera extrêmement lentement, voire se figera.

La seule solution est de charger les emplacements ainsi que les informations de manière asynchrone (AJAX).

C'est bien plus difficile que d'afficher une carte avec quelques marqueurs, et cela prendra beaucoup plus de temps à réaliser, même pour un développeur expérimenté.

Plus vous avez d'annonces, plus votre solution doit être complexe.

Vous atteindrez d'abord la taille maximale de réponse AJAX du navigateur, puis vous devrez charger les détails des annonces individuelles via AJAX, et enfin vous aurez besoin d'un regroupement, voire d'un regroupement côté serveur, capable d'afficher des millions d'annonces.

Construire un système qui regroupe les marqueurs de carte en clusters devient impératif pour un grand nombre d'annonces lorsqu'on a affaire à un volume considérable de celles-ci.

Atteindre ces limites sur un site en production parce que votre site a bénéficié d'une certaine publicité n'est pas quelque chose que vous souhaitez ni que vous pouvez régler du jour au lendemain.

La construction d'un tel système s'accompagne d'un autre ensemble de défis considérables.

Pour y parvenir, il faut une grande expérience en programmation.

  1. Intégration d'un formulaire de contact dynamique à l'annonces
GeoDirectory Contact Form pour chaque annonce

Intégrer un formulaire de contact unique pour chaque annonce, permettant aux visiteurs du site de contacter directement le propriétaire de l'entreprise, peut présenter plusieurs défis.

La complexité de la génération de formulaires dynamiques, la gestion des données, la personnalisation et la cohérence, la prévention du spam, les problèmes de compatibilité, les préoccupations de performance, ainsi que la maintenance et les mises à jour continues.

Malgré ces difficultés, la mise en œuvre de cette fonctionnalité peut grandement améliorer les capacités du site et faciliter la communication entre les visiteurs et les propriétaires d'entreprises.

Il n'existe aucun plugin offrant cette fonctionnalité prête à l'emploi.

Un développement personnalisé important est nécessaire pour implémenter une telle fonctionnalité dans un annuaire WordPress construit avec des Custom Post Types et des Advanced Custom Fields.

  1. Géocodage des annonces et recherche par proximité
La recherche par proximité est simple avec GeoDirectory, qui affiche même la distance réelle

Pour créer une recherche par proximité fonctionnalité, vous devez d'abord géocoder l'adresse de chaque annonce.

Le géocodage consiste à obtenir les coordonnées de longitude et de latitude à partir de l'adresse.

Cela peut être réalisé via l'API de géocodage Google Maps ; il existe de nombreux tutoriels en ligne et ce n'est pas une tâche très complexe, mais cela prend du temps.

Il existe un plugin qui peut aider à démarrer, mais il n'a pas été mis à jour depuis plus de 4 ans : https://wordpress.org/plugins/address-geocoder/

Une fois que toutes vos annonces sont géocodées, vous disposez de ce qu'il faut pour effectuer une recherche par proximité, mais cette fonctionnalité nécessite une bonne connaissance de WP-Query/SQL et du code personnalisé.

Une autre option serait d'utiliser FacetWP, un plugin de recherche premium à partir de 99 $/an pour 1 à 3 sites web.

  1. Géolocalisation des utilisateurs et affichage des annonces à proximité
GeoDirectory recherche des annonces près de votre position grâce à la géolocalisation

Cela peut être fait automatiquement (vous aurez besoin de données de géolocalisation IP fiables).

Ou, en utilisant l'API de géolocalisation de Google, en demandant aux utilisateurs de partager la localisation de leur navigateur.

La première option est plus conviviale mais moins précise. L'adresse IP renvoie rarement une adresse correcte à 100 %.

La deuxième option retourne la position de l'utilisateur avec une bien plus grande précision, mais ne fonctionne qu'avec son autorisation.

Les deux options nécessiteront du développement personnalisé, car il n'existe pas de plugin qui automatise tout cela.

De plus, disposer de la position de l'utilisateur n'est que le point de départ.

Vous devez encore interroger la base de données et retourner les annonces les plus proches de la position de l'utilisateur.

  1. Automatiser la revendication d'annonces pour les propriétaires d'entreprises
Système de revendication d'annonces GeoDirectory

L'un des moyens les plus simples d'engager les propriétaires d'entreprises et de les amener à payer pour une annonce premium est d'ajouter leur établissement à votre annuaire en tant qu'annonce gratuite et de les laisser la revendiquer.

Vous pouvez ensuite soit les contacter directement et les informer de cette opportunité, éventuellement avec un essai gratuit.

Soit, l'autre option, qui tend généralement à donner les meilleurs résultats, est qu'ils découvrent leur annonce sur votre annuaire par eux-mêmes.

De cette façon, vous leur montrez sur-le-champ que vous savez comment donner de la visibilité à votre site web et devenez immédiatement 10 fois plus attractif à leurs yeux.

Pour que la deuxième option soit possible, vous devez disposer d'un système de revendication d'annonces en place.

Un système de revendication d'annonces est une fonctionnalité mise en œuvre dans les sites d'annuaires qui permet aux propriétaires d'entreprises de prendre possession de leur annonce sur la plateforme.

Ce système est conçu pour garantir que les informations affichées sur le site d'annuaire sont exactes, à jour et gérées par le propriétaire ou le représentant autorisé de l'entreprise.

Pour revendiquer une fiche, les propriétaires d'entreprise doivent suivre un processus de vérification défini par le site d'annuaire, qui peut impliquer de fournir une preuve d'identité ou de propriété de l'entreprise, comme une licence commerciale, un numéro d'identification fiscale ou une facture de services publics.

Une fois la revendication approuvée, le propriétaire de l'entreprise prend le contrôle de la fiche et peut mettre à jour les informations, ajouter des photos, répondre aux avis ou promouvoir son entreprise grâce aux fonctionnalités premium proposées par le site d'annuaire.

Pour un petit annuaire avec quelques fiches, vous pouvez mettre cela en place avec un formulaire de contact et un processus manuel.

Si vous souhaitez ajouter une certaine automatisation, cette fonctionnalité nécessite beaucoup de développement personnalisé. Surtout si vous voulez que les propriétaires d'entreprise paient pour améliorer leur fiche dans le cadre du processus de revendication.

Il n'existe aucun plugin qui fera cela nativement pour les annuaires construits avec CPT et ACF.

  1. Afficher les heures d'ouverture et filtrer les recherches par disponibilité
GeoDirectory heures d'ouverture – ouvert maintenant

avec le plugin Advanced Custom Fields, vous pouvez créer des champs répéteurs pour les heures d'ouverture de chaque fiche.

Vous devrez créer un champ déroulant avec les valeurs horaires, puis utiliser PHP pour le formater correctement pour l'affichage ou les calculs.

Si vous souhaitez une précision à la minute, vous devrez utiliser un champ numérique.

La recherche par « Ouvert maintenant » ou « Fermé maintenant », surtout si vous devez prendre en compte les fuseaux horaires pour le calcul, n'est possible qu'avec des requêtes et du code personnalisés.

Un autre défi majeur consiste à mettre en cache ces informations sans perturber le statut ouvert/fermé des fiches.

Cela nécessite des compétences en JavaScript pour que le statut Ouvert/Fermé se mette à jour en temps réel sur la page.

Il va sans dire qu'il n'existe aucun plugin prêt à l'emploi qui vous aidera à réaliser cette fonctionnalité pour un annuaire basé sur CPT et ACF.

  1. Ajouter des notes, des avis et trier les fiches par mieux notées
GeoDirectory Avis

Ajouter des notes et des avis à un type de publication personnalisé, en utilisant le système de commentaires, est relativement simple.

Il existe des plugins gratuits et premium qui vous aideront à le faire, et vous trouverez peut-être même des tutoriels pour y parvenir sans plugin.

Trier les fiches par popularité ou par meilleures notes est un peu plus complexe et nécessitera du code personnalisé ainsi qu'une connaissance de la classe WP_Query et éventuellement de SQL.

De plus, en travaillant sur ce point, vous réalisez rapidement qu'un simple classement par meilleure note est un critère de classement insuffisant et que des requêtes de classement plus complexes sont nécessaires.

Surtout si vous décidez de créer des tables de base de données personnalisées, car avec tous ces champs, vous remarquerez rapidement qu'ACF n'est pas du tout scalable.

Mais nous y reviendrons dans le point suivant.

  1. Recherche d'annonces par champs personnalisés ou localisation
Recherche avancée GeoDirectory avec des champs personnalisés

C'est là que cette approche échouera lamentablement à grande échelle.

La table de base de données wp_postmeta (champs personnalisés) n'est pas conçue pour interroger des publications par champs personnalisés.

Le filtrage par plus d'un champ personnalisé peut entraîner une augmentation exponentielle des temps de requête, et même un petit répertoire aurait du mal à filtrer plus de deux champs personnalisés.

Pour ceux qui recherchent une explication technique, vous pouvez lire cet article sur les limites de scalabilité d'ACF.

À moins de gérer quelques centaines d'annonces avec un faible nombre de champs personnalisés chacune, même en utilisant un excellent plugin de recherche comme FacetWP, vous vous heurterez rapidement à un mur.

Plus votre serveur est performant, plus il vous faudra de temps pour atteindre ce mur, mais vous y arriverez inévitablement.

Il existe des plugins qui enregistrent les données ACF dans des tables de base de données personnalisées, comme : https://hookturn.io/downloads/acf-custom-database-tables/, mais cela représente un coût supplémentaire et vous devrez écrire une requête personnalisée pour votre formulaire de recherche afin d'interroger les nouvelles tables de base de données.

  1. Mise en place d'essais gratuits et payants pour les propriétaires d'entreprises

Proposer des options d'essai pour faciliter l'intégration est un moyen efficace d'encourager les propriétaires d'entreprises à explorer les fonctionnalités et les avantages d'un site de répertoire.

En offrant un accès gratuit ou à prix réduit aux fonctionnalités premium, les propriétaires d'entreprises peuvent découvrir la valeur de la plateforme sans s'engager financièrement immédiatement.

Cette approche contribue à réduire les obstacles à l'entrée et favorise la confiance entre le site de répertoire et les clients potentiels.

Au fur et à mesure que les propriétaires d'entreprises se familiarisent avec la plateforme et constatent son potentiel à accroître leur visibilité en ligne, à générer des prospects et à améliorer leur réputation, ils sont plus enclins à passer du statut d'utilisateur en période d'essai à celui de client payant.

Cela dit, proposer un essai gratuit ou payant n'est pas forcément simple. Si vous optez pour le développement from scratch, cela ajoutera des jours, voire des semaines, de développement personnalisé à votre projet et à votre budget.

  1. Ajouter des événements et rechercher par date
GeoDirectory Events - Recherche par dates

Les événements sont des annonces avec davantage de statuts que les annonces habituelles, qui dépendent d'une date de début et d'une date de fin. Les événements peuvent être passés, à venir ou en cours.

Vous aurez besoin d'un autre type de publication personnalisé et de requêtes de recherche plus complexes.

Il existe plusieurs plugins qui ajouteront un Calendrier d'événements complet à votre site, mais le style sera totalement différent de vos annonces créées avec la combinaison CPT/ACF.

Si vous décidez de construire cela également avec CPT/ACF, votre temps de développement vient de doubler.

  1. Créer une fonctionnalité de comparaison d'annonces
GeoDirectory - Comparer les annonces

Les avantages d'autoriser les utilisateurs à comparer les annonces sur un site d'annuaire sont nombreux.

En permettant aux utilisateurs d'évaluer facilement différentes entreprises ou services côte à côte, une fonctionnalité de comparaison peut les aider à prendre des décisions plus éclairées.

Cette fonctionnalité permet aux utilisateurs d'identifier rapidement les différences clés, telles que les tarifs, les caractéristiques, les évaluations ou la proximité, et de choisir l'option la plus adaptée en fonction de leurs besoins et préférences.

La mise en œuvre d'une fonctionnalité de comparaison d'annonces à l'aide de types de publications personnalisés et d'Advanced Custom Fields peut s'avérer complexe et chronophage.

La difficulté vient de la nécessité de créer un système qui génère dynamiquement une comparaison côte à côte des annonces sélectionnées, en tenant compte de divers champs et attributs personnalisés.

De plus, l'interface de comparaison doit être conçue pour être conviviale, visuellement attrayante et adaptée aux différentes tailles d'écran et appareils.

Le temps nécessaire pour mettre en œuvre une fonctionnalité de comparaison d'annonces dépend de plusieurs facteurs, tels que la complexité des annonces, le nombre de champs personnalisés à comparer, et l'expertise du développeur en matière de Custom Post Types et d'Advanced Custom Fields.

Cependant, il n'est pas rare que ce processus prenne plusieurs semaines de développement et de tests pour garantir une expérience utilisateur fluide et fonctionnelle.

  1. Ajouter un système de réservation pour les locations de vacances
GeoDirectory Booking Marketplace Clone Airbnb

Ce serait une tâche vraiment complexe avec CPT et ACF seuls. Cela nécessiterait des mois de développement sur mesure.

Il existe quelques plugins gratuits qui permettent de prendre des réservations pour une seule propriété, mais dans ce cas, nous aurions besoin de gérer des réservations pour plusieurs propriétés, chacune appartenant à des personnes différentes.

Nous n'avons pas trouvé de plugin premium permettant les réservations multivendeurs, avec une recherche globale par dates, des champs personnalisés (piscine, WiFi, parking) et le nombre de personnes.

GeoDirectory est désormais la seule solution offrant un plugin de réservation pour les locations de vacances, qui permet de créer un clone Airbnb complet où l'administrateur de l'annuaire peut gagner de l'argent grâce à une commission sur chaque réservation effectuée.

Conclusions

Bien qu'il soit effectivement possible de créer un annuaire professionnel complet en utilisant les Custom Post Types et Advanced Custom Fields, cette approche pourrait nécessiter des mois, voire des années de développement sur mesure pour implémenter toutes les fonctionnalités requises.

Une solution alternative consiste à utiliser des plugins compatibles avec ACF, ce qui peut contribuer à simplifier certains aspects du développement.

Cependant, cette approche peut nécessiter l'installation d'une multitude de plugins provenant de différents développeurs, dont beaucoup ne sont pas gratuits, entraînant des problèmes potentiels de compatibilité et des coûts accrus.

Par exemple, si vous deviez utiliser :

Vous en êtes déjà à près de 300 $/an et vous n'avez couvert qu'une infime partie des fonctionnalités nécessaires.

Une option plus efficace et plus économique est d'utiliser un plugin d'annuaire professionnel WordPress, tel que GeoDirectory.

En choisissant cette voie, vous bénéficiez d'une suite de fonctionnalités conçues spécifiquement pour les sites d'annuaires, toutes développées par un seul et même développeur.

Les plugins sont généralement légers, ce qui minimise les problèmes de performances et offre une application plus cohérente et supérieure, spécialement conçue pour créer un site d'annuaires.

En optant pour une solution comme GeoDirectory, vous économisez à la fois du temps et de l'argent, ce qui vous permet de créer un site d'annuaires puissant et convivial, sans les difficultés et les complexités liées au développement personnalisé et à la gestion de multiples plugins.