Uso del registro de depuración de WordPress

¿Alguna vez cometes errores? Sí. El primer paso para corregir sus errores es saber cuál es el error. No puedo resolver todos sus problemas, pero puedo ayudarlo a solucionar los que genera el código PHP en su sitio de WordPress ayudándolo a trabajar con los registros de depuración.

Hace unas semanas, cuando escribí sobre la personalización del archivo wp-config.php de su sitio de WordPress , cubrí la configuración para la depuración. Cubrí cómo mostrar errores y cuándo es posible que no quieras hacerlo. Si bien habilitar WP_DEBUG, como describí en ese artículo, es importante en el desarrollo, es posible que tenga algunos errores y advertencias no fatales que no puede evitar por cualquier motivo y que no desea mostrar a todos sus visitantes. Además, puede haber errores y advertencias de los que no está al tanto, ya que nunca los activó, pero los visitantes de su sitio los están viendo.

Por estas razones, en un sitio en vivo, es una buena idea dejar habilitado WP_DEBUG, pero para evitar que se muestren errores. Para ver estos errores y advertencias, deberá escribirlos en un archivo de registro especial, para que pueda revisarlos. En este artículo, cubriré la configuración del registro de errores y varias formas de ver sus registros. También cubriré cómo escribir otra información en ese registro y cuándo es posible que desee hacerlo.

Registrar errores, incluso cuando los está mostrando, sigue siendo útil, ya que tener un registro de sus errores suele ser muy útil en el desarrollo. Es posible que no pueda entender mucho un error cuando ocurre por primera vez, pero una vez que tenga más información del trabajo posterior, el registro en su registro puede ser muy útil.

Configuración

Esta es una breve revisión de lo que discutí en mi artículo de wp-config . Si nunca ha editado el archivo wp-config de su sitio, o no sabe qué es eso o qué es una constante, le recomiendo leer ese artículo y luego regresar a este.

Para habilitar la depuración, evitar que se muestren errores y advertencias y registrar errores, necesita estas tres líneas en su wp-config:

01
02
03
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );

Es importante tener en cuenta que no hay nada que pueda hacer para evitar que un error fatal cause una pantalla blanca de muerte , además de habilitar la visualización de depuración, que le mostrará una pantalla blanca con el error.

Ver su registro de depuración

El registro de depuración real se guarda en un archivo llamado debug.log en el directorio de contenido de su sitio. Una forma de ver y borrar su registro es acceder a ese archivo directamente. Esa no es una forma particularmente buena de trabajar, especialmente si su sitio está en un servidor remoto. Existen complementos que facilitan el trabajo con su registro de depuración, de los que hablaré en breve. Dicho esto, es importante estar familiarizado con este método, ya que si no puede acceder al back-end de WordPress debido a un error fatal, su registro de depuración podría contener las pistas para comprender por qué.

Hay varias formas de ver su registro de depuración desde el backend de WordPress. Mi método preferido es usar el complemento Log Viewer . Este complemento gratuito le brinda dos formas de ver su registro de depuración, así como la capacidad de borrarlo. Cuando este complemento está activo, puede ver su registro desde su página de administración, a la que se puede acceder desde el interior del menú Herramientas. Además, si tiene activo el complemento de la barra de depuración , que es una de las herramientas de desarrollo más útiles para WordPress, puede ver su registro desde un panel de la barra de depuración. No recomiendo tener la barra de depuración activa en un sitio en vivo, por lo que es bueno tener ambas opciones. Ambos complementos se pueden instalar desde el instalador de complementos de WordPress o mediante el complemento de desarrollador, que está lleno de herramientas útiles para ayudar a mejorar su desarrollo.

Así es como se ve la vista del registro de depuración:

 

Como puede ver, cada vez que WordPress encuentra una advertencia o un error, o genera un aviso, el error, la advertencia o el aviso se escribe en el registro, con una marca de tiempo en UTC.

Escribir otra información en el registro

En algunos casos, es posible que desee escribir información en el registro, incluso si técnicamente no es un error. PHP tiene una función llamada error_log, que imprimirá información en el registro de errores por usted. De forma predeterminada, no imprime ni formatea correctamente. Por esta razón, recomiendo agregar una función adicional a su sitio para manejar el formato. Es un contenedor para error_log, que usa print_r() para formatear matrices y objetos correctamente antes de registrarlos. Así es como se ve la función:

01
02
03
04
05
06
07
08
09
if ( ! function_exists('write_log')) {
   function write_log ( $log )  {
      if ( is_array( $log ) || is_object( $log ) ) {
         error_log( print_r( $log, true ) );
      } else {
         error_log( $log );
      }
   }
}

Recomiendo encarecidamente no agregar esto a functions.php de su tema , ya que en ese caso ya no funcionará si realiza el paso de depuración común de cambiar al tema predeterminado. En su lugar, cree un complemento para esta función. Hacerlo simplemente requiere crear un archivo en su directorio de complementos, agregar un encabezado de complemento y esta función. El encabezado puede ser tan simple como esto:

01
02
03
/*
Plugin Name: Log Error
*/

Una vez que tenga esta función disponible para usted, tiene una variedad de usos. ¿Quiere saber si alguna vez se llama a una línea de código específica? Usar:

01
write_log( __LINE__ );

Incluso puede usarlo para recopilar inteligencia básica sobre su sitio. Por ejemplo, ¿quieres registrar cuándo se vio una publicación específica y si el usuario que la vio inició sesión? Aquí hay un código simple para hacer eso:

 

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
add_action( 'wp_head', 'slug_log_post_view' );
function slug_log_post_view() {
   //set the ID of the post you want to track here:
   $post_to_track = 42;
 
   //get the current post's ID & make sure it's a valid ID and it matches our ID
   $id = get_queried_object_id();
   if ( intval( $id ) > 0 && $post_to_track === $id ) {
 
      //check if current user is logged in and if so get the user ID
      if ( is_user_logged_in() ) {
         $user_id = get_current_user_id();
         $user_id = 'a user with the ID ' . $user_id;
      }
      else{
         $user_id = 'a user that was not logged in.';
      }
 
      //log the information
      write_log( "The post {$post_to_track} was accessed by {$user_id}" );
 
   }
 
}

Si bien esta función no es Google Analytics, proporciona una forma rápida y sucia de recopilar información sobre una publicación específica. Asegúrese de establecer el ID de publicación correcto en la variable, $post_to_track. Incluso podría habilitar esto para todas las publicaciones, eliminando la marca para ver si $post_to_track es igual a $id. Si es así, asegúrese de cambiar la última línea para usar $id, en lugar de $post_to_track.

Registro de amor de todos los niños

Espero que esta introducción al registro de errores en WordPress le haya mostrado cómo usar esta capacidad de WordPress que a menudo se pasa por alto para ayudarlo a depurar cualquier problema en su sitio. No olvide que los errores de PHP no son el único tipo de error que puede generar. También hay errores de JavaScript, que aparecerán en la consola de JavaScript de su navegador.

Imagen en miniatura del artículo por PureSolution / shutterstock.com