Mostrar errores de PHP como alertas de administrador de WordPress

El lenguaje PHP es ampliamente adoptado para muchas aplicaciones web como WordPress. Tan poderoso como PHP es que tiene algunos inconvenientes, pero una de mis características favoritas de PHP es que mostrará errores directamente en la página web. La nueva barra de herramientas que se introdujo en WordPress 3.3 interfiere con esta funcionalidad. La barra de herramientas tiene una posición absoluta fija que cubre las primeras líneas de errores de PHP.


Opciones para mostrar errores

Con la nueva barra de herramientas que cubre errores de PHP, necesitamos utilizar otras opciones para depurar nuestros temas y complementos. Afortunadamente para nosotros, hay algunas opciones para elegir.


Complementos

Desde el inicio del nuevo complemento de la barra de herramientas, los desarrolladores han creado algunos complementos que pueden ayudarnos con este problema. Aquí hay un par de complementos que puedes usar para deshabilitar la barra de herramientas..

  • Old Skool Admin Head
  • Ocultar el complemento de la barra de herramientas
  • Limpiar la eliminación de la barra de administración
  • Barra de administración de WordPress mejorada

Todos estos complementos ofrecen características diferentes, pero todos nos permiten desactivar la barra de herramientas. Lo que nos permitirá ver cualquier error de PHP que se nos presente. Lo bueno de estos complementos es que se pueden habilitar y deshabilitar cuando sea necesario.


Registro de errores

La solución para los errores de PHP sugerida por el equipo central de WordPress es utilizar el registro de errores. Si estás desarrollando WordPress, ya deberías saber acerca de la constante WP_DEBUG que está definida en el archivo wp-config.php. También puede definir la constante WP_DEBUG_LOG. Aquí hay un ejemplo que el Códice de WordPress da para habilitar el registro de depuración..

 define ('WP_DEBUG', true); // falso si (WP_DEBUG) define ('WP_DEBUG_LOG', verdadero); define ('WP_DEBUG_DISPLAY', falso); @ini_set ('display_errors', 0); 

Esto generará cualquier error de PHP en un archivo llamado debug.log en la carpeta wp-content. Los errores de registro como este tienen altibajos. Cuando trabaje en un complemento comercial o cuando trabaje en un entorno de equipo donde sea necesario registrar errores. Esta es la mejor solución para rastrear sus errores, pero cuando se desarrolla un complemento o tema en una escala más pequeña, esto simplemente no es práctico. Cuando todo lo que necesitas hacer es asegurarte de que todas tus I estén punteadas y que las T se crucen. Puede ser muy frustrante tener que abrir, cerrar y volver a abrir el registro de errores cada vez que realice un cambio..


Mostrar errores como alertas de administrador

El método que he adoptado es generar errores de PHP como alertas de administrador. Creo que esta es la mejor solución hasta ahora. No se requieren complementos, es más conveniente que el registro de errores y puede dejarse en su lugar sin interferir con el diseño y el diseño del Área de administración o sus temas de WordPress.

El código utilizado para lograr esto es simple, y no puedo entender por qué esto no está integrado en WordPress Core. El siguiente código se debe colocar en su archivo functions.php o en su complemento de funcionalidad.

 function admin_alert_errors ($ errno, $ errstr, $ errfile, $ errline) $ errorType = array (E_ERROR => 'ERROR', E_CORE_ERROR => 'CORE ERROR', E_COMPILE_ERROR => 'COMPILE ERROR', E_USER_ERROR => USER ERROR = ', E_RECOVERABLE_ERROR =>' ERROR RECUPERABLE ', E_WARNING =>' ADVERTENCIA ', E_CORE_WARNING =>' CORE WARNING ', E_COMPILE_WARNING =>' COMPARE WARNING 'en este artículo. > 'USER AVISO', E_DEPRECATED => 'DEPRECATED', E_USER_DEPRECATED => 'USER_DEPRECATED', E_PARSE => 'PARSING ERROR'); if (array_key_exists ($ errno, $ errorType)) $ errname = $ errorType [$ errno];  else $ errname = 'ERROR DESCONOCIDO';  ob_start ();?> 

Error: [] en linea

Hay cuatro argumentos que se pasan a la función admin_alert_errors ().

  • $ errno: Da salida al nivel del error planteado. Cada tipo de error tiene un número asociado con él. $ errno muestra ese número.
  • $ errstr: Muestra el mensaje de error.
  • $ errfile: genera el nombre del archivo que tiene el error.
  • $ errline: Da salida a la línea que tiene el error.

La matriz $ errorType define el título usado para cada tipo de error.

p.ej. ADVERTENCIA Error: [2] include (wuzup) [function.include]:

Esto puede ser lo que quieras. Puede decir "Wuzup G, has estropeado algo".

p.ej. ADVERTENCIA Wuzup G, has arruinado algo: [2] include (wuzup) [function.include]:

No recomiendo usar eso para cualquier cosa que estés haciendo para un cliente a menos que tenga un muy buen sentido del humor, pero entiendes la idea.

La instrucción IF verifica si el tipo de error coincide con alguna de las constantes de error que definió en la matriz $ errorType. Si no, el título del error se mostrará como "ERROR DESCONOCIDO"

La última parte de la función es lo que se enviará. La clase error es una clase predeterminada integrada en WordPress que se utiliza para diseñar alertas de error de administrador.

Para iniciar la función admin_alert_errors (), usará la función set_error_handler (). El primer parámetro es la función utilizada para mostrar los errores. En este caso la función admin_alert_errors (). El siguiente conjunto de parámetros son las constantes de error de PHP que desea mostrar.

Si tiene experiencia en el manejo de errores, notará que E_STRICT no está incluido. Esto se debe a que hay algunos errores que provienen de WordPress Core. No estoy seguro de si esto es algo que el Equipo de WordPress Core ha perdido o si se trata de un diseño, pero de todas formas no es necesario ver estos errores. Además, el uso de E_ALL en lugar de enumerar todas las constantes de error no parece funcionar. Si usa E_ALL no todos los errores se mostrarán como alertas de administrador.

Nota: Esto no afecta la forma en que se muestran los errores en la interfaz de su sitio. Solo en las páginas de Admin..

otra nota: Cuando tengo los datos de prueba de WordPress instalados. Recibo un OBSOLETO error para el archivo class-simplepie.php.


Conclusión

Bueno, espero que esto te ayude con esos molestos errores de PHP. Si alguien tiene otra solución, por favor publíquela en los comentarios. Me encantaría ver lo que has encontrado.