Imprimir nombres de archivos de plantillas de WordPress para depuración

24 oct 2011, 13:06:38
Vistas: 8.18K
Votos: 8

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.

0
Todas las respuestas a la pregunta 4
1

esta también es una forma rápida;

<!--

<?php print_r( debug_backtrace() ) ?>

-->

pégalo justo antes de la etiqueta de cierre

24 oct 2011 18:54:58
Comentarios

En las pruebas, esto es más confiable que el código de @kaiser, ya que funciona en páginas y publicaciones; pero también es mucho más confuso de leer :)

PeterB PeterB
25 oct 2011 10:40:22
5

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' );
24 oct 2011 15:08:52
Comentarios

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.

kaiser kaiser
24 oct 2011 15:10:38

Hay un error tipográfico con la variable en el primer var_dump.

t31os t31os
24 oct 2011 16:49:17

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

kaiser kaiser
24 oct 2011 17:00:34

No andaba mucho por aquí, fue más una observación al pasar.. ;)

t31os t31os
25 oct 2011 13:21:50

@t31os Bastante buena. Me alegro de que no fuera "fitler" en vez de "filter" ;)

kaiser kaiser
25 oct 2011 17:05:23
0

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);
}
21 nov 2011 23:39:52
0
-1

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

2 abr 2016 20:47:17