Aquí tienes:
Una lista HTML con todos archivos de plantilla en uso para la página de destino actual, incluyendo todas las partes de la plantilla de complementos, tema secundario y / o combinaciones de tema principal , 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>';
PUEDE tener que verificar que su servidor no está devolviendo barras de duplicación en ninguna ruta . Recuerda colocar esto después de que todos los archivos de plantilla hayan sido realmente utilizados, como en footer.php, pero antes de que aparezca la barra de administración .
si la ruta admin-bar stuff
se muestra en la parte superior, o en cualquier otro archivo, cambie el nombre de 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 prioridad correcta (más pronto) 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 shure se cargue primero. La clave es llamar a get_included_files()
en el momento adecuado, de lo contrario, ¡se necesita un despliegue de matrices!
Para romper esto:
Usted no puede recopilar todos los archivos de plantilla incluidos sin retroceso de PHP. Los superglobales dentro de template_include
no los recopilarán todos . La otra forma es "colocar un marcador" en cada archivo de plantilla, pero si primero necesitas interactuar con los archivos, debes ocuparte del tiempo y de la idea en general.
1) Necesitamos revisar 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 sus funciones.php estén registradas.
$included_files = str_replace('\', '/', get_included_files());
Estamos utilizando los get_included_files () nativos de PHP, 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 se registra el template-loader.php. Después de eso, los archivos 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) Acortar los resultados, no necesitamos la ruta hasta que la carpeta de tema o la carpeta de complementos, como plantillas en uso, se pueda mezclar desde plugins, tema o carpetas de temas secundarios.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Finalmente, conviértalo de una matriz a una buena lista de HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Podría ser necesaria una última modificación en la parte 3) -reemplazo , si no quiere requeridos incluye por plugins Podrían llamar a 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 es una "plantilla" la que genera resultados en esta etapa.