Soporte » WordPress Avanzado » Rutas «muy personalizadas» para custom post types

  • zacarias.calabria

    (@zacariascalabriagmailcom)


    Hola,

    tengo la siguiente duda «existencial» para un proyecto en el que estoy trabajando, es para un sitio que comercializa viajes, tengo varios tipos de entradas personalizadas, en adelante CPT, y alguna taxonomía para conformar una «especie de modelo de datos»:

    • CPT «project type», con el slug «/projects»,
    • CPT «destination», con el slug «/destination»,
    • taxonomía personalizada «continent», con el slug «/continents», asociada al CPT «destination»
    • CPT: «project», con el slug «/projects»,

    Un proyecto, la entidad «principal», está relacionado con:

    • un CPT «destination», destino en el que está ubicado,
    • y uno o varios CPT «project type», tipos de proyectos con los que está relacionado.

    Todo esto genera un mapa de rutas similar a este:

    • /projects/ski-instructor-courses/, con un patrón /projects/{project-type-slug}/, caso de uso «single» de un custom post type «project type», muestro además todo los proyectos asociados al custom post type «project type» indicado en parámetro «project-type-slug» de la ruta,
    • /destinations/brazil/, con un patrón /destinations/{destination-slug}/, caso de uso «single» de un custom post type «destination», muestro además todo los proyectos asociados al custom post type «destination» indicado en parámetro «destination-slug» de la ruta,
    • /continents/africa/, con un patrón /continents/{continent-slug}/, caso de uso «tag» de un término de la taxonomía de destinos «continent», muestro además todo los proyectos asociados a los destinos que incluyen el término de la taxonomía «continents» indicado en parámetro «continent-slug» de la ruta,
    • /gap-year/2-week-pre-medical-experience-india/, con un patrón /gap-year/{project-slug}/, caso de uso «single» de un custom post type «project», muestro la información del custom post type «project» indicado en parámetro «project-slug» de la ruta.

    Pues bien, el equipo SEO del cliente me pide el siguiente cambio en la estrategia de URL:

    • para mostrar la vista single de un CPT «project type» usar el patrón /{project-type-slug},
    • para mostrar la vista single de un CPT «destination» usar el patrón /{destination-slug},
    • para mostrar la vista «tag» de un término de la taxonomía «continent» usar el patrón /{continent-slug},
    • para mostrar la vista single de un CPT «project» usar el patrón /{project-slug},
    • crear además una regla que coincida con el siguiente patrón /{project-type-slug}/{destination-slug}/ y para mostrar en ella los proyectos relacionados con los parámetros {project-type-slug} y {destination-slug} indicados en la ruta.

    Como se puede ver las rutas no están jerarquizadas ni organizadas, con lo que no existen patrones para saber qué tipo de recurso se está pidiendo en el «request» ¿se os ocurre alguna manera coherente de abordar esto usando, o no, el API Rewrite de WordPress?

    Gracias por adelantado.

    Estoy a vuestra disposición para cualquier duda.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • A ver, cosas que se me vienen a la cabeza:

    * Hay posibilidad de que 2 posts de diferente CPT se llamen igual? En ese caso que hace WP, poner el típico -2 en el slug?
    * Hay varios plugins para personalizar permalinks de CPT, que te permiten quitar el slug del nombre del CPT, los puedes ver aquí, abajo en los enlaces (siento es Spam, pero así no tengo que escribirlo)
    * No tiene más sentido que los CPT tengan el nombre en el slug? Vamos /continent/africa para mi tiene mucho más sentido que /africa, y debería incluso ayudar al SEO, no? 🤔
    * Por qué el Project Type no es una taxonomía también? Me pega más.

    • Esta respuesta fue modificada hace 5 años, 9 meses por Elías.
    Iniciador del debate zacarias.calabria

    (@zacariascalabriagmailcom)

    Hola Elias,

    muchas, muchas gracias por la respuesta, comento primero las que menos «afectación» tienen al proyecto.

    No tiene más sentido que los CPT tengan el nombre en el slug? Vamos /continent/africa para mi tiene mucho más sentido que /africa, y debería incluso ayudar al SEO, no?

    Lo veo igual que tú, incluso Google recomienda organizar y jerarquizar el mapa del sitio web,

    https://support.google.com/webmasters/answer/7451184?hl=es

    entiendo que lo hace más «entendible» a los bots y añade lógica a la hora de que procesen y estructuren datos, pero donde manda «capitán SEO» no manda «marinero programador», aunque tú estés viendo que el capitán vaya a hundir el barco, el cliente tiene más fe, por algún extraño motivo,en el SEO que en el programador.

    Por qué el Project Type no es una taxonomía también? Me pega más.

    Podría haber sido una taxonomía, sí, pero creo no ayudaría a solucionar la necesidad que plantea ahora el cliente, el caso es que finalmente esa entidad tenía suficiente peso por si misma, propiedades y contenido, como para tratarla de una entidad de primer nivel, pero sí, podría haber sido una taxonomía.

    Hay posibilidad de que 2 posts de diferente CPT se llamen igual? En ese caso que hace WP, poner el típico -2 en el slug?

    Pues no lo he probado ¿WordPress te permite añadir CPT sin meterle una patrón a la ruta?

    Hay varios plugins para personalizar permalinks de CPT…

    Es una opción que revisé al principio, pero delegar la generación de las URLs y el acceso a los recursos en manos de software hecho por terceros que, después de leer algunos comentarios, no me da la confianza suficiente lo veo un poco como «dejar el asunto en manos de Dios», activar el plug-in y cruzar los dedos:

    https://wordpress.org/support/plugin/custom-permalinks/reviews/?filter=1

    Además, tendrían que ser capaces de resolver URLs con el mismo patrón para distintos CPT, que bueno, es lo que hace más o menos ahora el API Rewrite con post y page ¿no?

    De todas forms creo que voy a revisar estos dos:

    • Estructura SEO: No digo nada 😅
    • Taxonomía: Si tiene propiedades la cosa cambia. No obstante, creo que las Querys con taxonomías WP las controla muy bien, sin embargo con relaciones con otros posts no tanto.
    • URLs CPT: No entiendo a que te refieres, ¿registrar un CPT sin asignar un slug? Las opciones de rewrite son estas (sacado del Codex)
    • Plugins: hombre, hacer las cosas uno mismo siempre da más control, esto está claro. Yo he usado uno de ellos durante bastante tiempo y no he tenido problemas (Custom Post Type Permalinks). Ten en cuenta también que solo escribirán los que tienen problemas jeje

    Bueno, suerte!

    • Esta respuesta fue modificada hace 5 años, 9 meses por Elías.
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Rutas «muy personalizadas» para custom post types’ está cerrado a nuevas respuestas.