GeoDirectory

Le sfide dello sviluppo di un sito directory con WordPress: Custom Post Type e Advanced Custom Fields (ACF)

Cos'è una directory online e perché è importante nel 2023

Un sito directory è una piattaforma online che funge da archivio completo e organizzato di informazioni su aziende, servizi o prodotti all'interno di un settore o una nicchia specifici.

Offrendo agli utenti una fonte di informazioni comoda e centralizzata, i siti directory li aiutano a prendere decisioni consapevoli quando cercano prodotti, servizi o aziende in grado di soddisfare le loro esigenze.

Nell'era digitale, in cui i consumatori si affidano sempre più a internet per trovare soluzioni e raccogliere informazioni, i siti directory svolgono un ruolo fondamentale nel connettere le aziende con il loro pubblico di riferimento.

Questi siti non solo rendono più semplice per gli utenti scoprire e confrontare le offerte di varie aziende, ma aiutano anche le aziende stesse ad aumentare la propria visibilità online, generare contatti e migliorare la propria credibilità.

Con una concorrenza online in continua crescita, avere un sito directory ben progettato e facile da usare è fondamentale per distinguersi e offrire valore sia agli utenti che alle aziende.

Utilizzo dei Custom Post Types di WordPress e di Advanced Custom Fields nella creazione di siti directory

Se chiedi nei gruppi Facebook e nei subreddit dedicati a WordPress qual è il modo migliore per creare un sito directory, la maggior parte risponderà di evitare i plugin appositamente creati e di costruirlo con CPT UI (Custom Post Type) e ACF (Advanced Custom Fields).

Questi sono plugin molto potenti, utilizzati da milioni di utenti; tuttavia, quando si tratta di sviluppare un sito directory con WordPress, i Custom Post Types e Advanced Custom Fields, il processo può risultare impegnativo, frustrante e pieno di costi nascosti.

Questi strumenti, pur essendo popolari e ampiamente utilizzati, richiedono spesso una curva di apprendimento ripida per gli sviluppatori che vogliono raggiungere una certa complessità, e possono portare a prestazioni non ottimali e a opzioni limitate.

Lascia che ti mostri il perché.

15 sfide nel raggiungere le funzionalità desiderate con i Custom Post Types e ACF nella creazione di un sito directory:

  1. Creare un modulo di invio annunci frontend per aggiungere e modificare gli annunci, con gestione dei pagamenti e scadenza degli annunci.
GeoDirectory include moduli di inserimento annunci frontend integrati

mentre con ACF è possibile facilmente creare un modulo sul frontend del tuo sito per aggiungere o modificare contenuti, ma fare in modo che accetti pagamenti, offra funzionalità extra per gli annunci a pagamento rispetto a quelli gratuiti, supporti gli abbonamenti (pagamenti ricorrenti) e così via risulterà molto più difficile da realizzare.

Se sei uno sviluppatore esperto che preferisce creare soluzioni fai-da-te, l'unico modo sarebbe programmare da zero tutte le funzionalità aggiuntive.

Questo comporterebbe settimane di lavoro (mesi se è la prima volta che ci si cimenta in un'attività simile).

In alternativa, è possibile ottenere lo stesso risultato aggiungendo ulteriori plugin a pagamento.

Ad esempio, la versione pro del plugin Frontend Admin fornirebbe la registrazione frontend degli utenti, l'invio di annunci a pagamento e la loro modifica.

Per un singolo sito, questo plugin aggiungerebbe 90$/anno al tuo budget.

  1. Distinguere gli annunci premium da quelli gratuiti
Badge annunci in evidenza di GeoDirectory vs annunci gratuiti

Se vuoi vendere annunci premium mantenendo anche annunci gratuiti, devi differenziare i due e aggiungere valore all'opzione a pagamento.

La soluzione migliore è creare un modulo di "invio annuncio" per ogni tipo di annuncio e aggiungere funzionalità extra agli annunci premium sotto forma di campi personalizzati aggiuntivi.

Ad esempio, l'annuncio gratuito potrebbe includere solo il nome dell'inserzione, l'indirizzo, il numero di telefono e 1 foto.

Mentre gli annunci premium avrebbero maggiori dettagli, come un indirizzo web, profili sui social media, più foto, una descrizione testuale più lunga, un modulo di contatto e così via.

Inoltre, gli annunci premium dovrebbero essere visivamente diversi, ad esempio mostrando un badge "IN EVIDENZA" o un layout differente.

Non è particolarmente difficile da realizzare, tuttavia richiede un tempo relativamente lungo.

Ciò che non è altrettanto semplice sarebbe fornire una visibilità maggiore agli Annunci Premium rispetto agli annunci gratuiti.

Ad esempio, fare in modo che gli annunci premium appaiano sempre in cima alle pagine di archivio delle categorie.

Per farlo, è necessario padroneggiare le query WP e/o SQL.

  1. Gestione degli Abbonamenti agli Annunci, dei Pagamenti Ricorrenti Falliti e delle Scadenze degli Annunci
Prezzi e pagamenti degli annunci su GeoDirectory

Cosa fare se il proprietario di un annuncio non rinnova l'annuncio effettuando un nuovo pagamento?

O nel caso in cui si configuri un abbonamento con pagamento ricorrente, e il proprietario dell'annuncio annulli l'abbonamento o il suo metodo di pagamento venga rifiutato?

Di certo non vuoi che l'annuncio rimanga attivo o che goda dei vantaggi di un annuncio premium senza pagare, giusto?

È necessario configurare un sistema per declassare l'annuncio oppure farlo scadere e modificarne lo stato in non pubblicato.

Tutto ciò richiederà codice personalizzato e, per sviluppare qualcosa del genere, è necessaria una buona conoscenza delle API dei gateway di pagamento, e in particolare degli IPN (instant payment notifications).

È inoltre necessario sapere come configurare un CRON job, come modificare gli stati dei post e come trasformare un annuncio premium in un annuncio gratuito, possibilmente senza perdere i dati aggiuntivi.

  1. Sviluppare una Mappa con Segnaposti Multipli.
Mappe GeoDirectory a caricamento rapido con migliaia di annunci

Tracciare posizioni su una Google Map usando Advanced Custom Fields e un po' di JavaScript è relativamente semplice.

Il primo passo è geolocalizzare gli indirizzi di ciascun annuncio, e ne parleremo più approfonditamente al punto 6 di questo elenco.

Ciò che non è semplice è tracciare molte posizioni. Soprattutto se si trasmette alla mappa più del semplice titolo dell'annuncio da visualizzare sui Segnaposti quando vengono cliccati.

Se si tenta di mostrare più di qualche centinaio di annunci su una mappa (di meno se il server non è di primo livello), la mappa si caricherà molto lentamente o si bloccherà.

L'unica soluzione è caricare in modo asincrono le posizioni e anche le informazioni (AJAX).

Farlo è molto più difficile che inserire una mappa con pochi segnaposti, e richiederà molto più tempo anche per uno sviluppatore esperto.

Più annunci si hanno, più la soluzione dovrà essere complessa.

Prima si raggiungerà la dimensione massima della risposta AJAX del browser, poi sarà necessario caricare i dettagli dei singoli annunci tramite AJAX, poi si avrà bisogno del clustering e persino del clustering lato server, che può gestire milioni di annunci.

Costruire un sistema che raggruppi i Segnaposti della Mappa in cluster per un elevato numero di annunci diventa indispensabile quando si gestisce una grande quantità di annunci.

Raggiungere questi limiti su un sito attivo, perché il tuo sito ha ottenuto visibilità, non è qualcosa che vuoi o che puoi risolvere dall'oggi al domani

Costruire questo tipo di sistema comporta un'altra serie enorme di sfide.

Raggiungere questo obiettivo richiede una grande esperienza di programmazione.

  1. Integrare un Modulo di Contatto Dinamico negli Annuncis
Modulo di contatto GeoDirectory per ogni annuncio

Integrare un modulo di contatto unico per ogni annuncio, che consenta ai visitatori del sito di contattare direttamente il titolare dell'attività, può presentare diverse sfide.

La complessità della generazione dinamica dei moduli, la gestione dei dati, la personalizzazione e la coerenza, la prevenzione dello spam, i problemi di compatibilità, i problemi di prestazioni e la manutenzione e gli aggiornamenti continui.

Nonostante queste difficoltà, implementare questa funzionalità può migliorare notevolmente le funzionalità del sito web e migliorare la comunicazione tra visitatori e titolari di attività.

Non esiste alcun plugin disponibile che fornisca questa funzionalità pronta all'uso.

È necessaria una codifica personalizzata significativa per implementare tale funzionalità in una directory WordPress costruita utilizzando Custom Post Types e Advanced Custom Fields.

  1. GeoCodifica degli annunci e ricerca per prossimità
Cercare per prossimità con GeoDirectory è semplice, mostra persino la distanza effettiva

Per creare una ricerca per prossimità funzione, è prima necessario geoCodificare l'indirizzo di ciascun annuncio.

La GeoCodifica consiste nell'ottenere le coordinate di longitudine e latitudine dall'indirizzo.

Ciò può essere fatto tramite l'API di GeoCodifica di Google Maps; ci sono diversi tutorial online e non è un'attività particolarmente complessa, tuttavia richiede tempo.

Esiste un plugin che può aiutare a iniziare, ma non viene aggiornato da oltre 4 anni: https://wordpress.org/plugins/address-geocoder/

Una volta che tutti gli annunci sono stati GeoCodificati, hai tutto il necessario per effettuare ricerche per prossimità, ma implementare questa funzionalità richiede una buona conoscenza di WP-Query/SQL e codice personalizzato.

Un'altra opzione sarebbe utilizzare FacetWP, un plugin di ricerca premium che parte da $99/anno per 1 fino a 3 siti web.

  1. GeoLocalizzazione degli Utenti e Visualizzazione degli Annunci Nelle Vicinanze
GeoDirectory ricerca annunci vicino alla tua posizione tramite GeoLocalizzazione

Questo può essere fatto automaticamente (avrai bisogno di dati di geolocalizzazione IP affidabili).

Oppure, utilizzando le API di Google GeoLocation, chiedendo agli utenti di condividere la posizione del loro browser.

La prima opzione è più intuitiva ma meno precisa. L'indirizzo IP raramente restituisce un indirizzo corretto al 100%.

La seconda opzione restituisce la posizione dell'utente con una precisione molto maggiore, ma funziona solo con l'autorizzazione dell'utente.

Entrambe le opzioni richiedono una codifica personalizzata, poiché non esiste un plugin che automatizzi tutto questo.

Inoltre, conoscere la posizione dell'utente è solo il punto di partenza.

Devi comunque interrogare il database e restituire gli annunci più vicini alla posizione dell'utente.

  1. Automatizzare la rivendicazione degli annunci per i titolari di attività
Sistema di rivendicazione annunci di GeoDirectory

Uno dei modi più semplici per coinvolgere i titolari di attività e farli pagare per un annuncio premium è aggiungere la loro attività alla tua directory come annuncio gratuito e consentire loro di rivendicarlo.

Puoi quindi contattarli direttamente e informarli dell'opportunità, magari con una prova gratuita.

Oppure, l'altra opzione, che di norma tende ad avere il miglior risultato, è che scoprano da soli il proprio annuncio nella tua directory.

In questo modo mostri loro sul momento che sai come dare visibilità al tuo sito web e diventi subito 10 volte più attraente ai loro occhi.

Affinché la seconda opzione sia possibile, devi disporre di un sistema di rivendicazione degli annunci attivo.

Un sistema di rivendicazione degli annunci è una funzionalità implementata nei siti directory che consente ai titolari di attività di assumere la proprietà del proprio annuncio sulla piattaforma.

Questo sistema è progettato per garantire che le informazioni visualizzate sul sito directory siano accurate, aggiornate e gestite dal titolare dell'attività o dal suo rappresentante autorizzato.

Per rivendicare un annuncio, i titolari di attività devono seguire un processo di verifica stabilito dal sito directory, che può prevedere la fornitura di una prova d'identità o della proprietà dell'attività, come una licenza commerciale, un codice fiscale o un'utenza.

Una volta approvata la rivendicazione, il titolare dell'attività ottiene il controllo dell'annuncio e può aggiornare le informazioni, aggiungere foto, rispondere alle recensioni o promuovere la propria attività utilizzando le funzionalità premium offerte dal sito directory.

Per una piccola directory con pochi annunci, puoi impostare tutto ciò con un modulo di contatto e un processo manuale.

Se desideri aggiungere un certo grado di automazione, questa funzionalità richiede una grande quantità di codice personalizzato, soprattutto se vuoi che i titolari di attività paghino per aggiornare il proprio annuncio come parte del processo di rivendicazione.

Non esiste un plugin che faccia tutto questo immediatamente per le directory create con CPT e ACF.

  1. Mostrare gli orari di apertura e filtrare i risultati per disponibilità
Orari di apertura di GeoDirectory – aperto adesso

con il plugin Advanced Custom Fields, puoi creare campi ripetitori per gli orari di apertura di ogni annuncio.

Dovrai creare un campo a discesa con i valori orari e poi usare PHP per formattarlo correttamente per la visualizzazione o i calcoli.

Se vuoi un orario specifico al minuto, dovrai utilizzare un campo numerico.

La ricerca per "Aperto adesso" o "Chiuso adesso", soprattutto se devi tenere conto dei fusi orari per il calcolo, è possibile solo con query e codice personalizzati.

Un'altra grande sfida è la memorizzazione nella cache di queste informazioni senza alterare lo stato aperto/chiuso degli annunci.

Questo richiede competenze in JavaScript per aggiornare in tempo reale lo stato Aperto/Chiuso sulla pagina.

È ovvio che non esiste un plugin già pronto che ti aiuti a implementare questa funzionalità per un annuncio CPT e ACF.

  1. Aggiungere valutazioni, recensioni e ordinare gli annunci per i più votati
Recensioni di GeoDirectory

Aggiungere valutazioni e recensioni a un custom post type, utilizzando il sistema dei commenti, è relativamente semplice.

Esistono plugin gratuiti e premium che ti aiuteranno a farlo, e potresti persino trovare tutorial su come ottenerlo senza un plugin.

Ordinare gli annunci per popolarità o valutazione più alta è leggermente più complesso e richiederà del codice personalizzato e la conoscenza della classe WP_Query e possibilmente di SQL.

Inoltre, lavorandoci, ti rendi presto conto che un semplice ordinamento per valutazione migliore è un fattore di ranking insufficiente e richiede query di classificazione più complesse.

Soprattutto se decidi di creare tabelle di database personalizzate perché, con tutti questi campi, noterai rapidamente che ACF non è affatto scalabile.

Ma ne parleremo più approfonditamente nel punto successivo.

  1. Ricerca di annunci per campi personalizzati o posizione
Ricerca avanzata di GeoDirectory con campi personalizzati

È qui che questo approccio fallirà miseramente su larga scala.

La tabella del database wp_postmeta (campi personalizzati) non è progettata per interrogare i post tramite campi personalizzati.

Filtrare per più di 1 campo personalizzato può causare un aumento esponenziale dei tempi di query, e anche una piccola directory avrebbe difficoltà a filtrare per più di due campi personalizzati.

Per chi cerca una spiegazione tecnica, può leggere questo articolo sui limiti di scalabilità di ACF.

A meno che tu non stia gestendo qualche centinaio di annunci con un numero ridotto di campi personalizzati ciascuno, anche utilizzando un ottimo plugin di ricerca come FacetWP, raggiungerai rapidamente un limite invalicabile.

Migliore è il tuo server, più tempo ci vorrà per raggiungere quel limite, ma alla fine ci arriverai.

Esistono plugin che salvano i dati ACF in tabelle di database personalizzate come: https://hookturn.io/downloads/acf-custom-database-tables/, ma rappresentano un costo aggiuntivo e dovrai scrivere una query personalizzata per il tuo modulo di ricerca per effettuare ricerche nelle nuove tabelle di database.

  1. Implementare prove gratuite e a pagamento per i titolari di attività

Offrire opzioni di prova per facilitare l'onboarding è un modo efficace per incoraggiare i proprietari di attività a esplorare le funzionalità e i vantaggi di un sito web di directory.

Fornendo accesso gratuito o scontato alle funzionalità premium, i proprietari di attività possono sperimentare il valore della piattaforma senza dover prendere un impegno finanziario immediato.

Questo approccio aiuta a ridurre le barriere d'ingresso e favorisce la fiducia tra il sito web di directory e i potenziali clienti.

Man mano che i proprietari di attività si familiarizzano con la piattaforma e ne scoprono il potenziale per aumentare la visibilità online, generare contatti e migliorare la propria reputazione, è più probabile che si convertano da utenti in prova a clienti paganti.

Detto questo, offrire una prova gratuita o a pagamento potrebbe non essere così semplice. Se si sceglie la strada dello sviluppo da zero, questo aggiungerà giorni, se non settimane, di programmazione personalizzata al tuo progetto e al tuo budget.

  1. Aggiungere eventi e la ricerca per data
GeoDirectory Events ricerca per date

Gli eventi sono listing con più stati rispetto ai listing standard, che dipendono da una data di inizio e una data di fine. Gli eventi possono essere passati, futuri o in corso.

Sarà necessario un ulteriore custom post type e query di ricerca più complesse.

Esistono diversi plugin che aggiungono un Calendario eventi completo al tuo sito web, ma lo stile sarà completamente diverso dai tuoi listing realizzati con la combinazione CPT/ACF.

Se decidi di costruire anche questo con CPT/ACF, i tuoi tempi di sviluppo raddoppieranno.

  1. Creare una funzione di confronto tra listing
GeoDirectory confronto listing

I vantaggi di consentire agli utenti di confrontare i listing su un sito web di directory sono numerosi.

Consentendo agli utenti di valutare facilmente diverse attività o servizi fianco a fianco, una funzione di confronto può aiutarli a prendere decisioni più consapevoli.

Questa funzione permette agli utenti di identificare rapidamente le differenze principali, come prezzi, funzionalità, valutazioni o prossimità, e di scegliere l'opzione più adatta in base alle proprie esigenze e preferenze.

Implementare una funzione di confronto tra listing utilizzando custom post type e Advanced Custom Fields può essere impegnativo e richiedere molto tempo.

La difficoltà deriva dalla necessità di creare un sistema che generi dinamicamente un confronto affiancato dei listing selezionati, tenendo conto di vari campi personalizzati e attributi.

Inoltre, l'interfaccia di confronto deve essere progettata per essere intuitiva, visivamente accattivante e reattiva a diverse dimensioni di schermo e dispositivi.

Il tempo necessario per implementare una funzione di confronto tra listing dipende da diversi fattori, come la complessità dei listing, il numero di campi personalizzati da confrontare e l'esperienza dello sviluppatore con Custom Post Type e Advanced Custom Fields.

Tuttavia, non è raro che questo processo richieda diverse settimane di sviluppo e test per garantire un'esperienza utente fluida e funzionale.

  1. Aggiungere un sistema di prenotazione per affitti vacanze
GeoDirectory Booking Marketplace Airbnb Clone

Questo sarebbe un compito davvero complesso con soli CPT e ACF. Richiederebbe mesi di programmazione personalizzata.

Esistono alcuni plugin gratuiti che consentono di gestire le prenotazioni per una singola proprietà, ma in questo caso avremmo bisogno di gestire le prenotazioni per più proprietà, ciascuna di proprietà di persone diverse.

Non siamo riusciti a trovare un plugin premium che consentisse prenotazioni multivendor, con una ricerca globale per date, campi personalizzati (piscina, WiFi, parcheggio) e numero di persone.

GeoDirectory è attualmente l'unica soluzione che offre un plugin di prenotazione per affitti vacanzecompleto, che consente di costruire un clone di Airbnb completo, dove l'amministratore della directory può guadagnare tramite una commissione per ogni prenotazione effettuata.

Conclusioni

Sebbene sia effettivamente possibile costruire una business directory completa utilizzando Custom Post Type e Advanced Custom Fields, questo approccio potrebbe richiedere mesi o addirittura anni di programmazione personalizzata per implementare tutte le funzionalità necessarie.

Una soluzione alternativa è utilizzare plugin compatibili con ACF, che possono contribuire a semplificare alcuni aspetti dello sviluppo.

Tuttavia, questo approccio potrebbe richiedere l'installazione di una serie di plugin di sviluppatori diversi, molti dei quali non sono gratuiti, con potenziali problemi di compatibilità e costi maggiori.

Ad esempio, se si dovesse utilizzare:

Si arriverebbe già a quasi $300/anno e si coprirebbe solo una minima parte delle funzionalità necessarie.

Un'opzione più efficiente e conveniente è utilizzare un plugin WordPress dedicato per business directory, come GeoDirectory.

Scegliendo questa strada, si beneficia di una suite di funzionalità progettate specificamente per i siti web di directory, tutte sviluppate da un unico sviluppatore.

I plugin sono generalmente leggeri, riducendo al minimo i problemi di prestazioni, e offrono un'applicazione più coesa e superiore, pensata appositamente per la creazione di siti web di directory.

Optando per una soluzione come GeoDirectory, si risparmia tempo e denaro, consentendo di creare un sito web di directory potente e intuitivo, senza le sfide e le complessità legate alla programmazione personalizzata e alla gestione di più plugin.