Retos del desarrollo de un sitio web de directorio con WordPress: tipos de publicaciones personalizadas y campos personalizados avanzados (ACF)

challenges developing directory website wp cpt acf
Última actualización: Publicado enBlog

Qué es un directorio en línea y por qué es importante en 2023

Un sitio web de directorio es una plataforma en línea que sirve como repositorio completo y organizado de información sobre negocios, servicios o productos dentro de una industria o nicho específico.

Al proporcionar a los usuarios una fuente de información conveniente y centralizada, los sitios web de directorio les ayudan a tomar decisiones informadas cuando buscan productos, servicios o negocios que satisfagan sus necesidades.

En la era digital, donde los consumidores dependen en gran medida de Internet para encontrar soluciones y recopilar información, los sitios web de directorio juegan un papel fundamental en la conexión de las empresas con su público objetivo.

Estos sitios web no solo facilitan a los usuarios descubrir y comparar las ofertas de diversas empresas, sino que también ayudan a las empresas a aumentar su visibilidad en línea, generar clientes potenciales y mejorar su credibilidad.

Con la creciente competencia en el espacio digital, contar con un sitio web de directorio bien diseñado y fácil de usar es esencial para destacar y aportar valor tanto a los usuarios como a las empresas.

Uso de Custom Post Types y Advanced Custom Fields de WordPress para crear sitios web de directorio

Si preguntas en grupos de Facebook y subreddits centrados en WordPress cuál es la mejor forma de construir un sitio web de directorio, la mayoría responderá que hay que evitar los plugins diseñados específicamente para ello y construirlo con CPT UI (Custom Post Type) y ACF (Advanced Custom Fields).

Estos son plugins muy capaces utilizados por millones de usuarios; sin embargo, cuando se trata de desarrollar un sitio web de directorio con WordPress, los Custom Post Types y Advanced Custom Fields, el proceso puede ser desafiante, frustrante y con muchos costes ocultos.

Estas herramientas, aunque populares y ampliamente utilizadas, a menudo requieren una curva de aprendizaje pronunciada para los desarrolladores con el fin de lograr cierta complejidad, y pueden dar lugar a un rendimiento subóptimo y opciones limitadas.

Déjame explicarte por qué.

15 desafíos para lograr las funcionalidades deseadas con Custom Post Types y ACF al construir un sitio web de directorio:

  1. Crear un formulario de envío de listados en el front-end para añadir y editar listados con pagos y expiración de listados.
GeoDirectory incluye formularios de alta de listados en el front-end integrados

mientras que con ACF puedes fácilmente crear un formulario en el front-end de tu sitio web para añadir o editar contenido; hacer que acepte pagos, ofrezca funcionalidades extra para listados de pago frente a listados gratuitos, permita suscripciones (pagos recurrentes), etc., será mucho más difícil de lograr.

Si eres un desarrollador avanzado que prefiere crear soluciones DIY, la única opción sería programar a medida todas las funcionalidades adicionales.

Esto implicaría semanas de trabajo (meses si es la primera vez que se afronta una tarea similar).

De lo contrario, esto se puede lograr añadiendo plugins de pago adicionales.

Por ejemplo, la versión pro del plugin Frontend Admin proporcionaría registro de usuarios en el front-end, envío de listados de pago y edición.

Para un único sitio, este plugin añadiría 90 $/año a tu presupuesto.

  1. Diferenciar los listados premium de los listados gratuitos
Insignia de listados destacados de GeoDirectory frente a listados gratuitos

Si quieres vender listados premium y al mismo tiempo tener listados gratuitos, debes diferenciar ambos y añadir valor a la opción de pago.

La mejor opción es crear un formulario de «envío de listado» para cada tipo de listado y añadir funcionalidades extra a los listados premium en forma de campos personalizados adicionales.

Por ejemplo, el listado gratuito podría tener únicamente el nombre del listado, la dirección, el número de teléfono y 1 foto.

Mientras que los listados premium tendrían más detalles, como una dirección web, cuentas en redes sociales, más fotos, una descripción de texto más larga, un formulario de contacto, etc.

Además, los listados premium deberían ser visualmente diferentes; por ejemplo, mostrando una insignia de «DESTACADO» o un diseño distinto.

Esto no es especialmente difícil de lograr; aun así, requiere un tiempo considerable.

Lo que no resulta tan sencillo sería ofrecer mayor visibilidad a los listados premium en comparación con los gratuitos.

Por ejemplo, hacer que los listados premium siempre aparezcan en la parte superior de las páginas de archivo de categorías.

Para eso, necesitas dominar las consultas WP y/o SQL.

  1. Gestión de suscripciones de listados, pagos recurrentes fallidos y expiración de listados
Precios y pagos de listados en GeoDirectory

¿Qué haces si el propietario de un listado no lo renueva pagando de nuevo?

¿O en el caso de que hayas configurado una suscripción con pago recurrentey el propietario del listado cancela la suscripción, o su método de pago es rechazado?

Definitivamente no quieres que el listado permanezca activo ni que obtenga las ventajas de un listado premium sin pagar, ¿verdad?

Debes configurar un sistema para degradar el listado o hacer que expire y cambie su estado a no publicado.

Todo esto requerirá código personalizado y, para desarrollar algo así, necesitas un buen conocimiento de las APIs de las pasarelas de pago y, en especial, de los IPNs (notificaciones de pago instantáneo).

También necesitas saber cómo configurar un trabajo CRON, cómo modificar los estados de las entradas y cómo convertir un listado premium en un listado gratuito, posiblemente sin perder los datos adicionales.

  1. Desarrollar un mapa con múltiples marcadores.
Mapas de GeoDirectory de carga rápida con miles de listados

Representar ubicaciones en un mapa de Google utilizando Advanced Custom Fields y un poco de JavaScript es relativamente sencillo.

El primer paso es geocodificar las direcciones de cada listado, y hablaremos más sobre eso en el punto 6 de esta lista.

Lo que no es fácil es representar muchas ubicaciones, especialmente si se transmite al mapa más información que el simple título del listado para mostrar en los marcadores al hacer clic.

Si empiezas a intentar mostrar más de unos pocos cientos de listados en un mapa (menos si el servidor no es de primera categoría), el mapa cargará extremadamente lento o incluso se bloqueará.

La única solución es cargar las ubicaciones y también la información de forma asíncrona (AJAX).

Hacer eso es mucho más difícil que colocar un mapa con unos pocos marcadores, y llevará mucho más tiempo lograrlo incluso para un desarrollador experimentado.

Cuantos más listados tengas, más compleja deberá ser tu solución.

Primero alcanzarás el tamaño máximo de respuesta AJAX del navegador; luego necesitarás cargar los detalles de los listados individuales mediante AJAX; después necesitarás agrupación e incluso agrupación del lado del servidor, que puede mostrar millones de listados.

Crear un sistema que agrupe los marcadores del mapa en clústeres para una gran cantidad de listados se vuelve imprescindible cuando se trabaja con un número enorme de listados.

Alcanzar estos límites en un sitio activo porque tu sitio recibió cierta publicidad no es algo que quieras ni puedas solucionar de la noche a la mañana

Construir este tipo de sistema conlleva otro enorme conjunto de desafíos.

Lograrlo requiere mucha experiencia en programación.

  1. Integración de un formulario de contacto dinámico en el listados
Formulario de contacto de GeoDirectory para cada listado

Integrar un formulario de contacto único para cada listado, que permita a los visitantes del sitio web contactar directamente al propietario del negocio, puede presentar varios desafíos.

La complejidad de la generación dinámica de formularios, la gestión de datos, la personalización y coherencia, la prevención de spam, los problemas de compatibilidad, las preocupaciones de rendimiento y el mantenimiento y las actualizaciones continuas.

A pesar de estas dificultades, implementar esta funcionalidad puede mejorar considerablemente la utilidad del sitio web y facilitar la comunicación entre los visitantes y los propietarios de negocios.

No existe ningún plugin disponible que ofrezca esta funcionalidad de forma inmediata.

Se requiere una programación personalizada significativa para implementar dicha funcionalidad en un directorio WordPress construido con Custom Post Types y Advanced Custom Fields.

  1. Geocodificación de listados y búsqueda por proximidad
Es fácil buscar por proximidad con GeoDirectory, incluso muestra la distancia real

Para crear una búsqueda por proximidad primero debes geocodificar la dirección de cada listado.

Geocodificar significa obtener las coordenadas de longitud y latitud a partir de la dirección.

Esto se puede hacer a través de la API de Geocodificación de Google Maps; hay varios tutoriales en línea y no es una tarea muy compleja, aunque sí lleva tiempo.

Existe un plugin que puede ayudar a comenzar, pero no se ha actualizado en más de 4 años: https://wordpress.org/plugins/address-geocoder/

Una vez que tienes todos tus listados geocodificados, cuentas con lo necesario para buscar por proximidad, pero lograr esa funcionalidad requiere buenos conocimientos de WP-Query/SQL y código personalizado.

Otra opción sería usar FacetWP, un plugin de búsqueda premium que comienza en $99/año para 1 a 3 sitios web.

  1. Geolocalización de usuarios y visualización de listados cercanos
Búsqueda de listados cercanos a tu ubicación con GeoDirectory mediante Geolocalización

Esto se puede hacer de forma automática (necesitarás datos de geolocalización por IP de confianza).

O bien, usando la API de Geolocalización de Google, solicitando a los usuarios que compartan la ubicación de su navegador.

La primera opción es más fácil de usar, pero menos precisa. La dirección IP raramente devuelve una dirección 100% correcta.

La segunda opción devuelve la ubicación del usuario con mucha mayor precisión, pero solo funciona con la autorización del usuario.

Ambas opciones requieren programación personalizada, ya que no existe ningún plugin que automatice todo esto.

Además, tener la ubicación del usuario es solo el punto de partida.

Aún necesitas consultar la base de datos y devolver los listados más cercanos a la ubicación del usuario.

  1. Automatización de la reclamación de listados para propietarios de negocios
Sistema de reclamación de listados de GeoDirectory

Una de las formas más sencillas de conectar con los propietarios de negocios y lograr que paguen por un listado premium es agregar su negocio a tu directorio como listado gratuito y permitirles reclamarlo.

Luego puedes contactarlos directamente y comunicarles la oportunidad, posiblemente con una prueba gratuita.

O bien, la otra opción, que generalmente tiende a tener el mejor resultado, es que descubran su listado en tu directorio por sí mismos.

De esta manera les estás demostrando en el acto que sabes cómo dar visibilidad a tu sitio web y te vuelves de inmediato 10 veces más atractivo para ellos.

Para que la segunda opción sea posible, necesitas tener un sistema de reclamación de listados en funcionamiento.

Un sistema de reclamación de listados es una funcionalidad implementada en sitios web de directorios que permite a los propietarios de negocios tomar posesión de su listado en la plataforma.

Este sistema está diseñado para garantizar que la información mostrada en el sitio web del directorio sea precisa, esté actualizada y sea gestionada por el propietario o representante autorizado del negocio.

Para reclamar un listado, los propietarios de negocios deben seguir un proceso de verificación establecido por el sitio web del directorio, que puede implicar presentar pruebas de identidad o titularidad del negocio, como una licencia comercial, número de identificación fiscal o factura de servicios.

Una vez aprobada la reclamación, el propietario del negocio obtiene el control sobre el listado y puede actualizar la información, agregar fotos, responder a reseñas o promocionar su negocio mediante las funcionalidades premium que ofrece el sitio web del directorio.

Para un directorio pequeño con pocos listados, puedes configurar esto con un formulario de contacto y un proceso manual.

Si deseas añadir cierta automatización, esta funcionalidad requiere mucha programación personalizada. Especialmente si quieres que los propietarios de negocios paguen para mejorar su listado como parte del proceso de reclamación.

No existe ningún plugin que haga esto de forma inmediata para directorios construidos con CPT y ACF.

  1. Mostrar horario comercial y filtrado de búsqueda por disponibilidad
Horario comercial de GeoDirectory – abierto ahora

con el plugin Advanced Custom Fields, puedes crear campos repetidores para el horario de apertura de cada listado.

Deberás crear un campo desplegable con los valores de hora y luego usar PHP para formatearlo correctamente para su visualización o cálculo.

Si deseas una hora con minutos específicos, deberás usar un campo numérico.

Buscar por «Abierto ahora» o «Cerrado ahora», especialmente si hay que tener en cuenta las zonas horarias para el cálculo, solo es posible con consultas y código personalizados.

Otro gran desafío es almacenar en caché esta información sin alterar el estado abierto/cerrado de los listados.

Esto requiere conocimientos de JavaScript para que el cambio Abierto/Cerrado se actualice en tiempo real en la página.

Ni que decir tiene que no existe ningún plugin listo para usar que te ayude a implementar esta funcionalidad para un CPT y un listado con ACF.

  1. Añadir valoraciones, reseñas y ordenar listados por mejor puntuación
GeoDirectory Reviews

Añadir valoraciones y reseñas a un tipo de entrada personalizado usando el sistema de comentarios es relativamente sencillo.

Existen plugins gratuitos y premium que te ayudarán a lograrlo, e incluso puedes encontrar tutoriales sobre cómo conseguirlo sin ningún plugin.

Ordenar los listados por popularidad o mejor puntuación es algo más complejo y requerirá algo de código personalizado y conocimiento de la clase WP_Query y posiblemente de SQL.

Además, al trabajar en esto, pronto te das cuenta de que un simple orden por mejor valoración es un factor de clasificación pobre y que se necesitan consultas de ranking más complejas.

Especialmente si decides crear tablas de base de datos personalizadas, porque con todos estos campos notarás rápidamente que ACF no escala en absoluto.

Pero hablaremos más sobre esto en el siguiente punto.

  1. Buscar listados por campos personalizados o ubicación
GeoDirectory advanced search with custom fields

Aquí es donde este enfoque fracasará estrepitosamente a escala.

La tabla de base de datos wp_postmeta (campos personalizados) no está diseñada para consultar entradas por campos personalizados.

Filtrar por más de 1 campo personalizado puede provocar un aumento exponencial en los tiempos de consulta, e incluso un directorio pequeño tendría dificultades para filtrar por más de dos campos personalizados.

Para quienes buscan una explicación técnica, pueden leer esta publicación sobre ACF scalability limits.

A menos que estés manejando unos pocos cientos de listados con un número reducido de campos personalizados cada uno, incluso usando un fantástico plugin de búsqueda como FacetWP, llegarás a un límite bastante rápido.

Cuanto mejor sea tu servidor, más tardarás en llegar a ese límite, pero tarde o temprano lo alcanzarás.

Existen plugins que guardan los datos de ACF en tablas de base de datos personalizadas, como: https://hookturn.io/downloads/acf-custom-database-tables/, pero suponen un coste adicional y tendrás que escribir una consulta personalizada para que tu formulario de búsqueda acceda a las nuevas tablas de base de datos.

  1. Implementar pruebas gratuitas y de pago para propietarios de negocios

Ofrecer opciones de prueba para facilitar la incorporación es una forma eficaz de animar a los propietarios de negocios a explorar las características y ventajas de un sitio web de directorio.

Al proporcionar acceso gratuito o con descuento a las funciones premium, los propietarios de negocios pueden experimentar el valor de la plataforma sin asumir un compromiso económico inmediato.

Este enfoque ayuda a reducir las barreras de entrada y fomenta la confianza entre el sitio web de directorio y los clientes potenciales.

A medida que los propietarios de negocios se familiarizan con la plataforma y comprueban su potencial para aumentar su visibilidad en línea, generar clientes potenciales y mejorar su reputación, es más probable que pasen de ser usuarios de prueba a clientes de pago.

Dicho esto, ofrecer una prueba gratuita o de pago puede no ser tan sencillo. Si optas por desarrollarlo desde cero, esto añadirá días, si no semanas, de programación personalizada a tu proyecto y presupuesto.

  1. Añadir eventos y búsqueda por fecha
GeoDirectory Events Search by Dates

Los eventos son listados con más estados que los listados habituales, que dependen de una fecha de inicio y una fecha de fin. Los eventos pueden ser pasados, próximos o en curso.

Necesitarás otro tipo de entrada personalizado más y consultas de búsqueda más complejas.

Existen varios plugins que añadirán un calendario de eventos completo a tu sitio web, pero el estilo será completamente diferente al de tus listados creados con la combinación CPT/ACF.

Si decides construir esto también con CPT/ACF, tu tiempo de desarrollo se habrá duplicado.

  1. Crear una función para comparar listados
GeoDirectory Compare Listings

Las ventajas de permitir a los usuarios comparar listados en un sitio web de directorio son numerosas.

Al permitir a los usuarios evaluar fácilmente diferentes negocios o servicios uno al lado del otro, una función de comparación puede ayudarles a tomar decisiones más informadas.

Esta función permite a los usuarios identificar rápidamente diferencias clave, como precios, características, valoraciones o proximidad, y elegir la opción más adecuada según sus necesidades y preferencias.

Implementar una función para comparar listados usando tipos de entradas personalizados y Advanced Custom Fields puede ser un desafío y llevar mucho tiempo.

La dificultad radica en la necesidad de crear un sistema que genere dinámicamente una comparación en paralelo de los listados seleccionados, teniendo en cuenta los distintos campos y atributos personalizados.

Además, la interfaz de comparación debe estar diseñada para ser fácil de usar, visualmente atractiva y adaptable a diferentes tamaños de pantalla y dispositivos.

El tiempo necesario para implementar una función de comparación de listados depende de varios factores, como la complejidad de los listados, el número de campos personalizados a comparar y la experiencia del desarrollador con los tipos de entradas personalizados y Advanced Custom Fields.

Sin embargo, no es raro que este proceso lleve varias semanas de desarrollo y pruebas para garantizar una experiencia de usuario fluida y funcional.

  1. Añadir un sistema de reservas para alquileres vacacionales
GeoDirectory Booking Marketplace Airbnb Clone

Esta sería una tarea realmente compleja solo con CPT y ACF. Requeriría meses de desarrollo personalizado.

Existen algunos plugins gratuitos que nos permiten gestionar reservas para una sola propiedad, pero en este caso necesitaríamos gestionar reservas para varias propiedades, cada una perteneciente a personas distintas.

No encontramos ningún plugin premium que permitiera reservas multivéndor, con búsqueda global por fechas, campos personalizados (piscina, WiFi, aparcamiento) y número de personas.

GeoDirectory es ahora la única solución que ofrece un plugin de reservas para alquileres vacacionales, que permite crear un Airbnb Clone completo donde el administrador del directorio puede ganar dinero mediante una comisión por cada reserva confirmada.

Conclusiones

Si bien es posible construir un directorio de negocios completo utilizando Custom Post Types y Advanced Custom Fields, este enfoque podría requerir meses o incluso años de desarrollo personalizado para implementar todas las funciones necesarias.

Una solución alternativa es utilizar plugins compatibles con ACF, que pueden ayudar a agilizar ciertos aspectos del desarrollo.

Sin embargo, este enfoque puede requerir instalar una serie de plugins de diferentes desarrolladores, muchos de los cuales no son gratuitos, lo que puede generar problemas de compatibilidad y un aumento de costes.

Por ejemplo, si utilizaras:

  • Frontend Admin: $49.99/año
  • FactWP: $99/año
  • ACF Custom Database Tables: $149/año

Ya estarías cerca de los $300/año y solo habrías cubierto una pequeña fracción de las funciones necesarias.

Una opción más eficiente y rentable es utilizar un plugin de directorio de negocios para WordPress, como GeoDirectory.

Al elegir esta opción, te beneficias de un conjunto de funciones diseñadas específicamente para sitios web de directorios, todas desarrolladas por un único equipo.

Los plugins suelen ser ligeros, lo que minimiza los problemas de rendimiento y ofrece una aplicación más cohesionada y superior, adaptada al propósito de crear un sitio web de directorio.

Al optar por una solución como GeoDirectory, ahorras tiempo y dinero, lo que te permite crear un sitio web de directorio potente y fácil de usar, sin los desafíos y la complejidad asociados con el desarrollo personalizado y la gestión de múltiples plugins.

¡Desbloquea el poder de GeoDirectory!

Empieza tu negocio online ahora

¡Únete hoy!

Boletín - ¡Mantente al día!

Recibe las últimas noticias, consejos y contenido exclusivo directamente en tu bandeja de entrada.

Publicado por Paolo

Paolo Tajani, cofundador y responsable de marketing en AyeCode LTD, trabaja junto a su socio Stiofan para desarrollar plugins clave de WordPress como GeoDirectory, UsersWP y GetPaid. Paolo comenzó su andadura con WordPress en 2008 y se unió a Stiofan O'Connor en 2011. Juntos han sido piezas fundamentales en la creación y promoción de una serie de temas y plugins de éxito, utilizados activamente en la actualidad por más de 100.000 sitios web.

Cargando...
Oferta de 20% de descuento
¡Date prisa! Obtén tu 20% de descuento antes de que expire. Obtener 20% de descuento