Aqui tienes:
Una lista HTML con todos los archivos de plantilla en uso para la página de destino actual, incluidas todas las partes de plantilla de complementos, combinaciones de temas secundarios y / o temas principales , todo en una línea de código:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Es posible que deba verificar que su servidor no devuelva barras de duplicación en ninguna ruta . Recuerde colocar esto después de que se hayan utilizado todos los archivos de plantilla, como en footer.php, pero antes de que se muestre la barra de administración .
si la admin-bar stuff
ruta se muestra en la parte superior o en cualquier otro archivo, cambie el nombre del archivo template-loader.php
en esta línea de código a: cualquier nombre de archivo del que deba separarse. A menudo:class-wp-admin-bar.php
si necesita esto en la barra de administración, use la priotity correcta (la más temprana) para asegurarse de que no se ingresen archivos al final de esta lista. Por ejemplo:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
La prioridad -5
hace que se cargue primero. ¡La clave es llamar get_included_files()
en el momento correcto, de lo contrario se necesita un despliegue de matriz!
Para romper esto:
No puede recopilar todos los archivos de plantilla incluidos sin la traza inversa de PHP. Las superglobales del interior template_include
no las recogerán todas . La otra forma es "colocar un marcador" en cada archivo de plantilla, pero si primero necesita interactuar con los archivos, tiene mucho tiempo y toda la idea.
1) Necesitamos verificar dentro de todos los archivos que han sido utilizados por la solicitud actual de Wordpress. ¡Y son muchos! No se sorprenda si está utilizando 300 archivos incluso antes de que se registre su functions.php.
$included_files = str_replace('\\', '/', get_included_files());
Estamos usando el PHP get_included_files () nativo, convirtiendo barras invertidas en barras diagonales para que coincidan con la mayoría de las rutas de retorno de Wordpress.
2) Estamos cortando esa matriz desde donde está registrado el template-loader.php. Después de eso, los get_included_files () rellenados solo deben tener archivos de plantilla rellenados.
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) Acorte los resultados, no necesitamos la ruta hasta que la carpeta de temas o la carpeta de complementos, como plantillas en uso, se puedan mezclar desde complementos, temas o carpetas de temas secundarios.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Finalmente, convierta de matriz a una buena lista HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Es posible que se necesite una última modificación en el reemplazo de la parte 3) , si no desea que se incluyan los complementos. Pueden llamar class-files
tarde e "interceptar" durante el procesamiento de salida de la plantilla.
Sin embargo, me pareció razonable dejarlos visibles, ya que la idea es hacer un seguimiento de lo que se ha cargado , incluso si no se trata de una "plantilla" que representa la salida en esta etapa.