Soporte » Guías – Resolución de problemas » Múltiples taxonomías en WordPress

  • Buenas amig@s

    Os molesto para hacerles una consulta por un email que me envió un cliente con una petición que no se muy bien cómo encausar.

    Es la web de una inmobiliaria que tiene su Custom Post Type Inbmuebles y tiene un conjunto de taxonomías para definir la ubicación del mismo.

    El cliente me pide que liste todas estas taxonomías pero también necesita para su SEO que agregue al final la taxonomía Venta/Alquiler y el tipo de inmueble, quedando una URL algo así:

    http://miinmobiliaria.com/ madrid / madrid-capital / madrid-centro / chamberi / venta / piso

    Es la primera vez que me topo con una petición de este tipo y después de buscar por Google aún sigo sin saber cómo desarrollarlo. Eviten enviarme enlaces de LetMeGoogleThatForYou :p

    Alguien ha desarrollado algo similar?

    Saludos,
    Mauricio

Viendo 11 respuestas - 1 de 11 (de 11 total)
  • Moderador Jose Conti

    (@jconti)

    No sé con qué SEO está trabajando, pero a las URL profundas, Google no le hace ni caso. Según las buenas costumbres, no se aconseja que una urls tenga más de 3 directorios, máximo 4. Con lo que pide, se podría extender a 6, 7 e incluso 8 o más.

    Es una locura cara al SEO.

    Buenas Jose:
    Conozco las limitaciones del SEO y el cliente está advertido de la situación. De hecho me parece aberrante.

    Pero aú así quiere implementarlo de esa manera.

    ¿Alguien implementó URL’s con taxonomías múltiples?

    Saludos chicos!
    Mauricio

    Mmmmm, yo he hecho algunos trabajos con reescrituras de URL bastante complejas, igual te puedo decir algo. One moment que busco entre mis apuntes.

    Me acabo de fijar bien en la estructura que pides y son muchos niveles sin ningún tipo de «identificación» de dónde empieza una taxonomía y dónde termina otra. No se me ocurre como diferenciarlas, al menos de una forma que no sea hace una obra faraónica.

    En tu ejemplo entiendo que el número de niveles de la taxonomía de ubicación es desconocido e ilimitado; podrían existir todas estas URLs:

    http://miinmobiliaria.com/madrid/madrid-capital/madrid-centro/ chamberi/venta/piso
    http://miinmobiliaria.com/madrid/madrid-capital/madrid-centro/venta/piso
    http://miinmobiliaria.com/madrid/madrid-capital/venta/piso
    http://miinmobiliaria.com/madrid/venta/piso
    http://miinmobiliaria.com/madrid/venta/
    http://miinmobiliaria.com/madrid/pìso/
    http://miinmobiliaria.com/madrid/
    http://miinmobiliaria.com/piso/
    http://miinmobiliaria.com/venta/

    Lo más rápido que se ocurre es añadir algún tipo de identificador de taxonomía. Por ejemplo:

    http://miinmobiliaria.com/ubicacion/madrid/madrid-capital/madrid-centro/chamberi/tipo-transaccion/venta/tipo-inmueble/piso

    Así sería mucho más directo hacer la regla de reescritura, pero se complica aún más la estructura de la URL.

    Entiendo que la idea es crear listados automáticos tipo «Pisos en venta en el barrio de Chamberí» pero creo que igual hay que pensar en otra forma de crearlos.

    Moderador Jose Conti

    (@jconti)

    No lo he comprobado, pero parece que en este hilo de los foros lo resuelven.

    https://wordpress.org/support/topic/insert-category-of-taxonomy-between-custom-post-type-and-post

    Quizá no se resuelve la coletilla.

    Creo que no es lo mismo Conti, fíjate que ahí hay una estructura fija:

    http:://ejemplo.com/{post_type}/{term_slug}/{post_slug}

    Pero en la estructura que quiere Mauricio no hay nada fijo:

    http:://ejemplo.com/{term_slug}/[{term_slug}/]

    Dónde [{term_slug}/] se puede repetir un número ilimitado y desconocido de veces (el usuario puede crear la profundidad que quiera provincia-cidudad-distrito-barrio-calle….) y además cada {term_slug} puede ser de varias taxonomias y, como no hay límite de profundidad en la primera taxonomía, no podemos saber dónde empieza el {term_slug} de una taxonomía y empieza el de otra.

    Al menos a mi no se me ocurre una rápida y fácil, solo introducir fragmentos en la URL que identifiquen cada parte. Tipo:

    http:://ejemplo.com/{taxonomy_1}/{term_slug}/{taxonomy_2}/{term_slug}/{taxonomy_3}/{term_slug}

    O ya pensar en otra estructura de URL más sencilla y fija con partes conocidas. Por ejemplo (tan sólo un ejemplo pensado rápido, seguro que hay mejores):

    http:://ejemplo.com/{endpoint_fijo}/{term_slug_of_tax_1}/{term_slug_of_tax_2}/{term_slug_of_tax_2}/
    Sin profundidad ilimitada y con el {endpoint_fijo} para diferenciarlo de cualquier otra estructura de nivel superior, por ejemplo del predeterminado http:://ejemplo.com/{post_slug}.

    Por ejemplo, inmuebles como endpoint:

    http:://ejemplo.com/inmuebles/chamberi/venta/apartamento/
    http:://ejemplo.com/inmuebles/serrallo/alquiler/
    .....

    No sé si me pilláis.

    Moderador Jose Conti

    (@jconti)

    Depende de como se mire.

    Si solo se tiene una taxonomía, realmente no sirve, pero si se crean tantas taxomínias, como partes de slug se quiera, no debería hacer ningún problema con el enlace que he puesto.

    Eso si, siempre se deben rellenar todas.

    Por ejemplo, se podría tener las taxonomías:

    – Región
    – Provincia
    – Ciudad
    – Zona
    – Tipo
    – Lo que sea

    Luego, solo es montar el slug de CPT y ya lo tienes. Lo que pasa es que te fuerzas a rellenar en cada nueva entrada, todas las taxonomías y que tengan todas la misma estructura exacta. Pero sinceramente, lo lógico es que todas tengan la misma estructura para que Google entienda la web.

    Ahora creo que hablamos de lo mismo, más o menos. Jajaja.

    En este plugin que hice hace dos años como experimento, y que se quedó en eso, tenía el tipo de post type properties, y las taxonomías type, city y features, y tenía estas URLs:

    // Properties archive
    ejemplo.com/properties/
    // Singular
    ejemplo.com/properties/post_slug
    // City taxonomy
    ejemplo.com/properties/city/term_slug
    // Type taxonomy
    ejemplo.com/properties/type/term_slug
    // Features taxonomy
    ejemplo.com/properties/features/term_slug
    // Procesamiento formulario de búsqueda
    ejemplo.com/properties/search

    Bajo properties/search procesaba un formaultio con POST, así que no se generaban URLs diferentes para cada combinación de taxonomías, pero si creamos el endpoint search, u otro que queramos, se puede hacer. Y sin verte forzado a nada. Podrías tener, además de las URLs anteriores, este tipo de URL:

    // Todos los inmuebles en venta
    ejemplo.com/properties/search/venta
    // Todos los inmuebles en venta en chamberí
    ejemplo.com/properties/search/venta/chamberi
    // Todos los inmuebles en venta en chamberí tipo piso
    ejemplo.com/properties/search/venta/chamberi/piso

    La clave es tener una estructura de URLs predecible, en esto coincidimos. En este caso la estructura predicible sería properties/search/{venta/alquiler}/{taxonomia_ubicacion}/{taxonomia_tipo_inmueble}.

    Lo que no incluiría sería todas las ubicaciones, solo la más baja. En este caso se incluiría chamberi en la URL, pero no madrid/madrid-capiatl/madrid-centro/chamberi.

    No se, es la mejor idea que se me ocurre por el momento.

    Moderador Jose Conti

    (@jconti)

    Yo, como endpoint, crearía varios, luego, dependiendo del lugar que nos encontremos, ejecutaría un código u otro dependiendo de lo que interesara, es decir,

    • /properties/venta/
    • /properties/alquiler/

    Pero no lo acabo de ver muy eficiente, ya que en la realidad, estarás creado un loop personalizado, junto a un rewrite que deberás también crear.

    Lo veo mucho trabajo, a menos que los slugs, si o si, puedan ser todos diferentes en longitud.

    Si, claro, ya sería cuestión de ir afinando los endpoints y estructura que se desea, pero la idea creo que podría ir por ahí.

    Yo en principio no le veo problemas de performance, habría una regla rewrite por cada endpoint creado, que no aporta nada al rendimiento, y se procesa en pre_get_posts, no le veo problema a priori.

    Chicos, sóis la bomba.
    Probaré distintas alternativas con vuestros consejos y documentaré con un post el resultado el cual agregaré a este hilo para que quede constancia.
    Nuevamente, mil gracias por vuestra ayuda.
    Mauricio

Viendo 11 respuestas - 1 de 11 (de 11 total)
  • El debate ‘Múltiples taxonomías en WordPress’ está cerrado a nuevas respuestas.