Imprimir nombres de archivos de plantillas de WordPress para depuración
He tomado el mantenimiento de un gran sitio impulsado por WP-MS. El sitio tiene ~200 plantillas, muchas específicas para páginas, y sin un procedimiento de nomenclatura estándar.
Me ahorraría mucho tiempo si mientras navego por el sitio pudiera ver los nombres de las plantillas que componen la página actual. ¿Es esto posible? He buscado en los plugins de depuración para WordPress, pero parecen estar orientados a variables y consultas SQL, no a plantillas.

Las siguientes funciones hacen 3 cosas:
- Muestran la jerarquía de plantillas para la solicitud actual
- Muestran el tema en uso (se muestran 2 formas de lograrlo)
- Muestran la plantilla actual en uso para la solicitud *)
*) Adjúntalo al filtro de contenido. Es posible que necesites jugar con el condicional o la capacidad según tu rol. Hasta ahora no conozco una solución para mostrar la plantilla de página para archivos y solicitudes similares de vistas de lista.
// No es tan fácil de leer:
var_dump( get_required_files() );
/**
* Muestra la jerarquía de plantillas y el tema al final de la solicitud/página.
* @return void
*/
function wpse31909_template_info()
{
// No mostrar para usuarios que no son administradores
if ( ! current_user_can( 'manage_options' ) )
return;
// Tienes que construir tú mismo la jerarquía aquí o en algún lugar antes de la función
global $wp_template_hierarchy;
$content = '<pre>';
// Mostrar jerarquía de plantillas
$content .= "JERARQUÍA DE PLANTILLAS\n==================\n";
$content .= var_export( $wp_template_hierarchy, true );
// Mostrar tema actual en uso:
$content .= "\n\nTEMA ACTUAL\n=============\n";
$content .= var_export( get_option( 'template' ), true );
// o:
# $content .= var_export( get_template(), true );
$content .= '</pre>';
return print $content;
}
add_action( 'shutdown', 'wpse31909_template_info' );
/**
* Muestra la plantilla en vistas individuales adjuntada al final del contenido para administradores
* @return $content
*/
function wpse31909_template_to_content( $content )
{
// Mostrar contenido estándar para usuarios no administradores y vistas que no son de entrada/página/CPT/adjunto.
if ( ! current_user_can( 'manage_options' ) && ! is_singular() )
return $content;
$content .= '<pre>';
// Mostrar plantilla actual en uso: Debe estar en el bucle para obtener el global $post
$content .= var_export( get_post_meta( $GLOBALS['post']->ID, '_wp_page_template' ), true );
$content .= '</pre>';
return $content;
}
add_filter( 'the_content', 'wpse31909_template_to_content' );

Tal vez funcione si también adjuntas la segunda función al filtro the_excerpt
. Supongo que entonces también aparecerá en las vistas de lista. @Todos Siéntanse libres de editar y ampliar esta respuesta.

@t31os ¿No quieres arreglarlo? Da +2 puntos de reputación en cada voto positivo. Gracias de todos modos :)

Uso esto para simplemente imprimir el nombre del archivo de plantilla en la parte superior de la página con fines de depuración.
// Para depuración - mostrar archivo de plantilla
add_action('wp_head', 'show_template');
function show_template() {
global $template;
print_r($template);
}

Aunque no es una respuesta directa a la pregunta en cuestión, probablemente también debería mencionarse aquí que, por defecto, WordPress añade un nombre de clase a la etiqueta <body>
para las plantillas de página personalizadas. Por ejemplo, si estás viendo una página que tiene una plantilla personalizada y el nombre del archivo de la plantilla es custom.php, entonces se agregará un nombre de clase page-template-custom
a la etiqueta <body>
.
La documentación sobre esta característica se puede encontrar aquí: https://codex.wordpress.org/Function_Reference/body_class#Page
