¿Cómo funciona el enrutamiento en wordpress?

12

¿Cómo funciona el enrutamiento del núcleo wp? Me cuesta entenderlo ... En MVC, tu URL se parece a mycontroller / myaction que se asigna a MyController- > myaction ()

En drupal, es index.php? q = mycustomerpath / hello, que puede asignarse a cualquier función que te guste y que devuelva un contenido "temático" a tu diseño de tema.

Pero en wp, no tengo ni idea de cómo se hacen las cosas ... ¿es? p = 1 entonces? producto = 1 ... He buscado documentación del flujo de enrutamiento pero no puedo encontrar ninguna (google simplemente devuelve) artículos sobre rutas personalizadas) ... quiero comprender primero los fundamentos del enrutamiento central ...

    
pregunta yeahman 12.04.2014 - 09:46

1 respuesta

17

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.

    
respondido por el Otto 12.04.2014 - 12:08

Lea otras preguntas en las etiquetas