En WordPress, las URL no se asignan a las rutas. Se asignan a las consultas de la base de datos.
Cuando usas WordPress en el modo "permanente" de los enlaces permanentes, tienes un conjunto de variables en la consulta principal de URL, como? p = 1 o? page = 234 y así sucesivamente. También hay? S = search y muchos otros.
Si utiliza los enlaces de enlaces "bonitos", se creará un gran conjunto de reglas llamadas "reglas de reescritura" que asignan directamente varios patrones de URL a este mismo conjunto de parámetros de URL. Así que una URL como / 2014/04/12 / example se asignaría a? Año = 2014 & month = 04 & day = 12 & postname = example o similar. Por lo tanto, lo siguiente también se aplica a estos, una vez que se haya completado este mapeo.
Estas variables controlan esencialmente la instancia principal de la clase WP_Query. La clase WP_Query contiene toda la información que construye 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 el tipo de consulta que genera y los datos que obtiene.
Ver, todo lo que WordPress puede mostrar es esencialmente una "publicación". Un blog es una serie de publicaciones en orden inverso basado 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 algún 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 según la consulta. Si solicitó / category / example, entonces se convierte en? Category_name = example, lo que significa que la matriz principal $ wp_query- > query_vars obtendrá esa información, y WP_Query sacará las últimas X publicaciones para la categoría "ejemplo", y establecerá su indicador is_category en verdadero.
El cargador de plantillas se ejecutará después de esto, compruebe que is_category () devuelve true y decida elegir la plantilla de categoría, por lo que buscará category-example.php y volverá a category.php y así sucesivamente, de acuerdo con a la jerarquía de plantillas.
Por lo tanto, la pregunta si desea cambiar cómo funcionan las URL es simple: ¿desea cambiar las URL o a qué se asignan? 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 la consulta principal, es un proceso ligeramente diferente que si desea que una URL especial ejecute algún otro código especial.
Y para responder a tu pregunta específica en los comentarios: "¿no hay casos en los que realmente no quieras mostrar publicaciones?" No no hay. Todo es un post. Todo el contenido se almacena en las publicaciones. Si desea almacenar contenido en otro lugar y ser diferente, puede hacerlo, pero es más difícil porque, honestamente, no suele ser necesario. Si tiene contenido especial, cree un tipo de publicación personalizada, almacene su contenido como una publicación con ese tipo, asigne un patrón de URL a este. Fácil.