En WordPress, las URL no se asignan a rutas. Se asignan a consultas de bases de datos.
Cuando utiliza WordPress en el modo de enlaces permanentes "predeterminado", tiene un conjunto de variables en la consulta de URL principal, como? P = 1 o? Página = 234 y así sucesivamente. También hay? S = search y muchos otros.
Si utiliza los enlaces permanentes "bonitos", se crea un gran conjunto de reglas llamadas "reglas de reescritura" que mapea directamente varios patrones de URL en este mismo conjunto de parámetros de URL. Entonces, una URL como / 2014/04/12 / example se correlacionaría con? Year = 2014 & month = 04 & day = 12 & postname = example o similar. Por lo tanto, lo siguiente también se aplica a estos, después de realizar esta asignación.
Estas variables controlan esencialmente la instancia principal de la clase WP_Query. La clase WP_Query contiene toda la información que genera la consulta de la base de datos para obtener las "publicaciones" de la base de datos. Los diversos parámetros que se le pasan controlan qué tipo de consulta crea y qué datos obtiene.
Mira, todo lo que WordPress puede mostrar es esencialmente una "publicación". Un blog es una serie de publicaciones en orden inverso en el tiempo. Una "página" es una publicación estática con un nombre definido. Un "tipo de publicación personalizada" es exactamente lo que parece, una "publicación" con un tipo personalizado que usted define. Todas las consultas principales para mostrar cualquier cosa en WordPress obtienen un subconjunto de publicaciones de la tabla wp_posts.
El WP_Query es lo que hace eso. Y los parámetros de la URL se envían directamente a esa consulta principal y se usan allí.
El tema luego determina qué plantilla usar en función de lo que devuelve la consulta. Si solicitó / category / example, entonces eso se convierte en? Category_name = example, lo que significa que la matriz principal $ wp_query-> query_vars obtendrá esa información, y WP_Query extraerá las últimas X publicaciones para la categoría "ejemplo", y establecerá su bandera is_category en true.
El cargador de plantillas se ejecutará después de esto, ver que is_category () devuelve verdadero y decide elegir la plantilla de categoría, por lo que buscará category-example.php y volverá a category.php y así sucesivamente, de acuerdo con la Plantilla Jerarquía.
Entonces, la pregunta si desea cambiar el funcionamiento de las URL es simple: ¿Desea cambiar las URL o a qué están asignadas? Debido a que las URL no se asignan a funciones, se asignan a parámetros que controlan la consulta. Si desea que la URL ajuste esa consulta principal, entonces es un proceso ligeramente diferente que si desea que una URL especial ejecute algún otro código especial.
Y para responder su pregunta específica en los comentarios: "¿no hay casos en los que realmente no desea mostrar publicaciones?" No no hay. Todo es un post. Todo el contenido se almacena en publicaciones. Si desea almacenar contenido en otro lugar y ser diferente, puede hacerlo, pero es más difícil porque, sinceramente, generalmente no es necesario. Si tiene contenido especial, haga un tipo de publicación personalizado, almacene su contenido como una publicación con ese tipo, asigne un patrón de URL a él. Fácil.