La jerarquía de plantillas es una de mis características favoritas en WordPress. No solo hace posibles temas para los niños, sino que también mejora todo el ecosistema, porque se puede escribir más código para sentarse en piezas más pequeñas. Esto es genial. Lo que también es genial es que todo está activado por unas pocas piezas de código relativamente pequeñas. Pero mirarlos comienza a exponernos a algunas de las partes más interesantes de WordPress. Esta publicación implica una cierta familiaridad con PHP, por lo que si nunca lo hace, puede volver un poco. Pero no es demasiado complicado y mareado, por lo que incluso un novato que se queda con nosotros definitivamente aprenderá algo o dos.
Un resumen rápido de la jerarquía de plantillas Esta publicación no contendrá un resumen exhaustivo de la jerarquía de la plantilla. Pero algo de comprensión es útil. La jerarquía de la plantilla prácticamente está haciendo dos cosas en WordPress:
Permite que un tema contenga fácilmente muchos archivos diferentes para diferentes casos comunes en WordPress: Archivos de categoría, páginas con una sola publicación, etc., que puede existir de forma independiente. La jerarquía de la plantilla es la forma de WordPress de elegir entre ellos y aliviar el trabajo de un autor temático.
Permite que un tema secundario camine en el mismo proceso que usa el tema principal y cancele las opciones individuales de la plantilla con la suya. Esto es lo que hace que la tarea de los niños sea tan fuerte: pueden cambiar rápidamente las partes pequeñas de los padres sin tener que hacer todo.
Se ve un poco así:

Y siempre lo digo, pero mi lugar favorito para echar un vistazo a la jerarquía de la plantilla de WordPress es wphiererchy.com.La función básica para los temas de los niños: por lo tanto, la jerarquía de la plantilla requiere dos cosas básicas: que el tema secundario se verifica para obtener archivos antes del tema principal y que toda la jerarquía tiene lugar en la forma en que se mostró los autores.La mayor parte de la lógica que se da cuenta de que la segunda está en /wp-includes/template-loader.php.Más sobre esto más tarde.La mayor parte de la lógica que logra la compatibilidad del tema infantil se encuentra en la posición ubicada en /wp-ncludes/template.php.La función respectiva se ve así:
function ubate_template ($ Template_names, $ load = false, $ reequire_once = true) {$ place = ”; foreach ((array) $ platplate_names como $ Template_name) {if (! $ Template_name); If (file_exist (StylesHeetPath. ‘/’. $ Template_name)) {$ place = style. ‘/’. $ Template_name; descanso; } Elseif (file_exists (TemplatePath. ‘/’. $ Template_name)) {$ place = TemplatePath. ‘/’. $ Template_name; descanso; }} if ($ load && ”! = $ ubicado) lod_template ($ place, $ reequire_once); devolver $ ubicado; } Esencialmente, localizar_template se llama con una serie de plantillas que debe buscar. Su actividad básica es el bucle foreach, donde primero busca asegurarse de que el elemento transmitido de la matriz sea una cadena. Si es así, están buscando en la carpeta de temas infantiles (StylesheetPath es la ruta del sistema de archivos de tema infantil) para un archivo con el nombre de determinación: piense “Archive.php”. Si lo encuentra, rompa las hojas de ForEach. Es decir: el bucle se detiene y se mueve al final del bucle. Si no lo encuentra, entonces mira el tema del “padre” (nuevamente, Templash es la ruta del sistema de archivos del padre).
Eso es todo lo que es realmente. Haga el bucle a través de todos los archivos en una matriz determinada y, si no encuentra ningún archivo que se ajuste, devuelva el valor $ ubicado a una cadena vacía. Si encuentra uno que se ajusta a medida que pasa por la lista en el tema del niño o (entonces) en el tema principal, devolverá la ruta completa a ese archivo. Además, dependiendo de cómo se llamara, cargará el archivo para guardar el apelante una transición adicional a la función Load_template. Es una función bastante simple, localizar_template, y no hay muchas variables globales utilizadas en ella. Pero incluso, sin embargo, esta es la razón por la cual la jerarquía de la plantilla, y las funciones relacionadas como get_template_part () y get_header (), funcionan con temas infantiles. ¡Bastante limpio! La jerarquía actual de la plantilla en el código solo esta semana, al investigar este artículo, hice tiempo para seguir la jerarquía de tentaciones dentro de WordPress. Creo que habla bien sobre la robustez de los proyectos que nunca necesitaba encontrar ese código. Creo que habla mal de mi curiosidad. En cualquier caso, cómo viajar la jerarquía de la plantilla para que una solicitud para que una publicación de blog se detenga en Single.php si el tema (temas) lo tiene, pero progresa a index.php si no la tiene.
Básicamente, todas las solicitudes a un sitio de WordPress pasan a través del archivo index.php desde la raíz del proyecto. Contiene las líneas:

Define (‘wp_use_themes’, true);/** Carga el entorno y la plantilla de WordPress*/requerir (dirname (__file__).Ese dispara en WP-Blog-Taer.php.Y WP-Blog- Header.php contiene estos tiempos: if (! Isset ($ wp_did_header)) {$ wp_did_header = true;reequire_once (dirname (__ file__). ‘/wp-load.php’);Wp ();Require_once (abspath. Wpinc. ‘/Platplate- loader.php’);} El que nos interesa es la última línea: request_once (abspath. Wpinc..Este es el archivo que luego contiene la jerarquía de plantillas si se usa un tema para mostrar la página.El archivo es demasiado grande para mostrarse por completo, pero la parte central que nos interesa son las filas 58-91, que dicen:
if (definido (‘wp_use_themes’) && wp_use_theme): $ plantplate = false; if (is_404 () && $ Template = get_404_template ()): elseif (is_search () && $ TEMPLATE = get_search_template ()): elseif (is_front_page () && $ Tempate = get_page_page_template = get_home_template ():):) $ Template = get_post_ype_template ()): elseif (is_tax () && $ Template = get_taxonomy_template (): elseIf (is_attachment () && $ Template (re) ‘the_content’, ‘preoPend_attachment’); Elseif (is_single () && $ Template = get_single_template ()): elseif (is_page () && $ Template = get_page_template ()): elsi (is_singular () && $ template = get_singular_template = get_category_template ():):) $ Template = get_tag_template ()): elseif (is_author () && $ Template = get_author_template (): elseif (is_date () && $ template = get_date_template (): elseif (): is_archive () && $ Template = get_archive_template ())) elseif (is_comments_popup () && $ plantplate = get_comments Terminara si; /*** Filtre la ruta de la plantilla de corriente antes de incluirla. * * @since 3.0.0 * * @param cadena $ plantilla el parche de la plantilla para incluir. */ if ($ Template = APLICE_FILTERS (‘TEMPLATE_INCLUDE’, $ TEMPLATE)) Incluye ($ plantilla); devolver; Terminara si;
Un bloque gigante si, seguido de una simple llamada PHP incluye. ¡Esta es la jerarquía de la plantilla en toda su simple gloria! ¿Cómo funciona todo esto? La mayoría de los desarrolladores de WordPress tendrán algo de experiencia con funciones como IS_404 (). Responden si la página actual que se muestra es o no de este tipo. Todos estos se han configurado aquí aquí, por lo que podemos tratarlo como una caja negra mágica. Entonces, esas etiquetas se usan junto con las llamadas de tipo de plantilla = get_404_template (). Y aquellos, debajo del capó, casi todos los llamados. En el caso de 404s, la función se muestra de la siguiente manera: función get_404_template () {return get_query_template (‘404’); } A su vez, get_query_template es un poco más que un recubrimiento para tomar la cadena ‘404’ y cambiarla en 404.php y luego llamar a localate_template con ella como una matriz. (Get_Query_template también hace una higiene básica y tiene una llamada APLICE_FILTERS, pero eso es realmente.
Entonces, ¿cómo pasa la jerarquía de la plantilla? Por un gigante si bloquea. Si no hay un archivo de plantilla 404, se moverá a la siguiente condición de rama, etc. Nada demasiado complicado. Y si no se encuentra ninguno de ellos, el resultado get_index_template (), que obtiene index.php, es la solución final, como sabemos sobre la jerarquía de plantillas. Bastante cuidado, ¿verdad? Lo que aprendí sobre la jerarquía de las plantillas esperamos que hayamos demostrado que algunas características de programación simples: un árbol if-elsif-else y un bucle con algunos archivos básicos son suficientes para hacer que toda la jerarquía de la plantilla se ejecute.
Espeleología en la jerarquía de plantillas
Tags Espeleología en la jerarquía de plantillas
homefinance blog