Guía sobre modo WordPress Debugging

Qué es WordPress Debug (WP_DEBUG): Guía sobre el modo depuración de WordPress

¿Necesitas desinfectar tu página web?

Si tu página web ha sido infectada o quieres prevenirte frente a ciberataques no dudes en escribirnos.

Independientemente del nivel que tengas como desarrollador de WordPress siempre existirá un problema al que te enfrentarás constantemente en WordPress: los errores. De ahí, la importancia de que conozcas que es WordPress Debug (WP_DEBUG) o el modo de depuración de errores de WordPress.

Por desgracia los errores en cualquier página web son muy frecuentes incluso en los desarrolladores más experimentados ya que es prácticamente imposible que mientras se escriba código no se produzcan errores.

Por este motivo se creo el sistema de depuración de errores de WordPress, para ayudarte a aprender aún más sobre este gestor de contenidos mientras te equivocas.

Si tienes experiencia previa en programación es probable que ya hayas tenido errores durante la compilación o ejecución de páginas web y hayas pasado tiempo revisando el código en busca del problema.

La dinámica con WordPress Debug (WP_DEBUG) es la misma.

A diferencia de cualquier programación común, los errores producidos en WordPress no se imprimen simplemente en la página. Estos quedan anotados en los registros de depuración de WordPress ya que pueden contener información confidencial como las credenciales de acceso a tu base de datos.

Por este motivo, WordPress coloca estos registros de depuración en tu servidor de forma no accesible al público.

Explicación sobre la depuración de errores de WordPress

Como probablemente sepas WordPress está desarrollado en PHP. Esto significa que tanto la guía oficial de WordPress sobre depuración así como la guía oficial de depuración de PHP te ayudarán.

Para poder depurar errores de WordPress necesitas tener definida una variable PHP global. No te preocupes, lo veremos más adelante.

De todos modos, es importante que sepas que se ha de distinguir entre el proceso de depuración de errores de PHP y el proceso de depuración de WordPress.

Por ejemplo, con PHP vanilla solo se muestran dos tipos de errores de forma predeterminada. Un “error fatal” que es tan grave que la página ni siquiera se puede cargar. Y el otro “error grave” que muestra al usuario una página en blanco.

Es decir, PHP sabe que mostrar un  mensaje de error completo podría representar un riesgo de seguridad para tu página web y por eso no lo hace. De todos modos, esto lo puedes cambiar en la configuración de PHP fácilmente.

Por otro lado, WordPress simplemente habilita la depuración de WordPress (WordPress Debug) y no la personaliza. Es decir, en el modo de depuración de WordPress se mostrarán todos los niveles de error, advertencia e incluso elementos informativos para los desarrolladores.

Eso significa que se mostrará todo, desde errores fatales hasta un mensaje técnico sobre cómo debes optimizar una sección concreta de JavaScript. Esto es extremadamente útil para los webmasters (Ya que te indica el origen del error) aunque molesto para los usuarios.

Además, WordPress Debug te informará sobre funciones de PHP específicas de WordPress que han quedado obsoletas y que pese a seguir funcionando ahora en el futuro se dejarán de admitir.

¿Cómo habilitar el modo depuración de WordPress (WP_DEBUG)?

Para habilitar el modo de depuración de WordPress (WP_DEBUG) solo necesitarás un par de líneas de PHP.

Para ello, abre tu editor de texto favorito (El bloc de notas de Windows o Notepad ++ te servirán) y descarga una copia de tu archivo wp-config.php vía FTP.

Nota: ¡No edites el archivo original! Simplemente utiliza la versión modificada una vez que hayas terminado.

Una vez abierto wp-config.php en tu editor de texto deberás agregar la siguiente línea de código (Primero, búscala para asegurarte de que aún no está).

define( 'WP_DEBUG', true );

Todo lo que hace esta línea de código es establecer la variable PHP global llamada WP_DEBUG al valor booleano de verdadero.

¡Ya está! Con esta simple línea de código el modo de WordPress WP_DEBUG estará activado y podrás encontrar errores de código en tu WordPress.

Del mismo modo, si deseas desactivar la depuración de WordPress basta con escribir la línea de código opuesto:

define( 'WP_DEBUG', false );

¿Dónde está el registro de depuración de WordPress?

Técnicamente existen dos respuestas a esta pregunta y la respuesta exacta dependerá de tu elección:

Como te mostramos anteriormente con la línea de código (‘WP_DEBUG’, true) utilizarás el modo de depuración de WordPress con su configuración predeterminada y, por lo tanto, el registro de depuración de WordPress se creará automáticamente en la ubicación wp-content/debug.log (Si el archivo no existe se creará y si ya existe se actualizará)..

Sin embargo, puede que quieras cambiar la ubicación predeterminada de este registro por motivos de seguridad. También es posible que desees tenerlo en una ubicación donde una herramienta de depuración de terceros pueda acceder a él.

Por este motivo, para personalizar dónde se coloca el registro de depuración de WordPress bastará con habilitar el WP_DEBUG de la siguiente forma:

define( 'WP_DEBUG_LOG', '/best-wp-dev/errors.log' );

Explicación del registro de depuración de WordPress

El nivel de detalle de la información que aparezca en tu registro de depuración de WordPress dependerá en todo momento de cómo lo configures.

Si simplemente lo habilitas por defecto y sin modificaciones adicionales dicho registro registrará prácticamente todos los eventos que causan un error, usan una función obsoleta o no son óptimos.

Dado que WordPress está construido sobre PHP tu registro mostrará todos los errores y advertencias de PHP lanzados.  También contendrá la fecha, la hora y la dirección IP asociadas con cada evento.

También te indicará la salida muy detallada de PHP sobre muchas cosas, como el estilo de código que no le gusta, la validación de datos que cree que debería fortalecerse más, etc.

Debug (WP_DEBUG) vs Debug Log (WP_DEBUG_LOG)

Aunque el objetivo es el mismo, es importante que entiendas la diferencia entre depurar y registrar.

En otras palabras, la línea define (‘WP_DEBUG’, true); hace algo completamente diferente de la línea define (‘WP_DEBUG_LOG’, true) ;.

En ningún caso deberás utilizar define (‘WP_DEBUG’, true); en un sitio web público. Este comando una vez se activa solo solo imprime los mensajes de depuración, no los registra.

Además, al mostrar estos mensajes de forma pública podrás estar expuesto a ataques informáticos.

Ejemplo de código de modo de depuración seguro en WordPress

Si quieres comenzar a depurar tu WordPress de forma segura utiliza el siguiente código:

define( 'WP_DEBUG', true );

define( 'WP_DEBUG_LOG', true );

define( 'WP_DEBUG_DISPLAY', false );

@ini_set( 'display_errors', 0 );

Las primeras tres líneas simplemente configuran variables PHP globales a las que WordPress presta atención. Con estas líneas de código estarás haciendo posible la depuración de WordPress, configurando la funcionalidad de registro y luego desactivando los errores específicos de WordPress.

La última línea servirá para abordar los errores de PHP que no son manejados por WordPress.

Con este código te garantizarás que los usuarios malintencionados no tengan acceso a información confidencial de tu página web.

¿Cómo solucionar un error de depuración de WordPress?

A menudo, los desarrolladores utilizarán las cuatro líneas de código anteriores y probarán hasta conseguir solventar el error. Sin embargo, a veces no habrá nada en el registro de depuración al respecto.

Esto se debe a que WordPress tiene diferentes variables PHP globales para diferentes métodos de depuración.

Veamos algunos ejemplos en los que deberás agregar algunas líneas más a tu archivo wp-config.php para utilizar el modo de depuración de WordPress correctamente.

Depuración de errores JavaScript con WordPress

Si tienes una página web WordPress es muy probable que en ella utilices el lenguaje de programación JavaScript. Por este motivo, queremos ayudarte a que aprendas a depurar errores de Javascript con WordPress.

Si no sabes que es Javascript bastará con que sepas que este lenguaje de programación sirve principalmente para los elementos interactivos de las páginas web.

JavaScript es bastante conocido por ser bastante tedioso de depurar. Esto se debe a que la mayoría de páginas web modernas utilizan frameworks de JavaScript externos complicándolo todo.

Por desgracia, eso no es lo único que dificulta la depuración de código JavaScript de WordPress.

Hay dos tipos de JavaScript: asincróno o “AJAX” y JavaScript normal.

  • JavaScript normal: funciona de forma lineal y no ejecutará una función hasta que se ejecute la anterior.
  • Asíncrono o AJAX: este código opera en segundo plano en tu página web y te permite ejecutar varias funciones de JavaScript a la vez sin esperar a que termine una para empezar la otra.

La razón principal por la que WordPress nos obliga a utilizar otra variable global de PHP para decir que queremos depurar scripts es porque este método de depuración genera una gran cantidad de datos.

También se debe a que JavaScript y CSS se ejecutan en el lado del cliente, mientras que PHP se ejecuta en el lado del servidor.

Para generar todos los errores que se encuentra WordPress debido al uso de JavaScript y CSS deberás agregar esta línea a tu wp-config:

define( 'SCRIPT_DEBUG', true);

Depuración de errores con bases de datos de WordPress

Casi todos los sitios web obtienen información de una base de datos y WordPress no iba a ser una excepción.

WordPress utiliza bases de datos y, dependiendo de la instalación, algunos sitios web WordPress almacenarán las bases de datos en servidores separados y otros lo harán en el mismo servidor.

Dado que todas las configuraciones web son diferentes siempre existe la posibilidad de que algo salga mal en la conexión de la base de datos.

Por lo tanto, si recibes un mensaje de error que indica que WordPress no se pudo conectar a tu base de datos o si nota que los datos no se extraen correctamente tendrás que acceder al modo EBUG de WordPress para bases de datos.

Para comenzar a depurar los problemas de la base de datos de WordPress deberás agregar otra línea de código a tu archivo wp-config.php:

define( 'SAVEQUERIES', true );

A diferencia de nuestras otras variables de depuración globales de WordPress esta es especialmente delicada.

“SAVEQUERIES” le indica WordPress que queremos ver cada consulta ejecutada y sus resultados devueltos.

Esto provocará un empeoramiento del rendimiento de tu página web. Por lo tanto, no ejecutes este modo en horas del día con mucho tráfico web o puede que la página web colapse.

Depuración de errores en temas o themes de WordPress

La depuración de errores en temas de WordPress generalmente implica habilitar la variable global PHP con respecto a los scripts. Esto se debe a que los temas utilizan JavaScript y CSS del lado del cliente.

Primero, y antes de ir directamente a por el error si el theme no es tuyo lo mejor será comunicarse con el desarrollador oficial.

Si el theme es tuyo asegúrate de seguir los pasos anteriores para habilitar el modo depuración de WordPress y provoca cualquier acción que provoque el error.

También podrás habilitar Developer Console dentro de tu navegador web presionando F12. Este sistema te mostrará más mensajes de error a nivel de cliente que podrán ayudarte a solventar el error.

Depuración de un error crítico de WordPress

Si un plugin, un tema u otro contenido personalizado genera un error que provoca que tu página web WordPress falle tu propia página web deberá enviarte un correo electrónico indicándote que se ha “producido un error crítico en tu WordPress”.

Estos emails pueden resultar realmente angustiosos.

¡Pero no te preocupes! Siguiendo esta cadena de pasos podrás resolver el error crítico en tu WordPress rápidamente:

  1. Activa el modo de depuración de WordPress.
  2. Accede a tu registro de errores para obtener información detallada sobre el error fatal. Si es así, busca el código de error exacto en línea indicada.
  3. Verifica tu versión de PHP. Si no es lo que WordPress requiere actualmente, simplemente actualizar la versión de PHP que utiliza tu servidor para solucionar el problema.
  4. Si aún no tienes suerte, revisa tus plugins. Desactiva todo. Si tu página web funciona, eso significará que un plugin es el que está causando problema. Revísalos uno por uno hasta que encuentres el plugin problemático.
  5. Si aún no has encontrado el problema podría ser un problema relacionado con el theme de WordPress. Cambia tu theme actual al predeterminado de WordPress y si tu página web funciona deberás cambiar temporalmente el tema hasta que el autor del mismo resuelva el error.
  6. ¿No lo has solucionado? Publica tu error en el foro de desarrolladores de WordPress. Hay muchos usuarios que estarán encantados de ayudarte.

Acceder a la depuración de errores con plugins de WordPress

Una de las principales ventajas de WordPress sobre otras plataformas es su rica biblioteca de plugins con los que pueden hacer casi cualquier cosa.

Por ello, y, como no podía ser de otra forma, si estás cansado de código o esto lo ves muy complicado siempre podrás acceder al modo de depuración de errores de WordPress con plugins del repositorio oficial de WordPress.

Por este motivo, a continuación te dejamos un par de plugins que te ayudarán en esta tarea:

WP Debugging

WP Debugging es uno de los plugins de depuración de WordPress más conocidos del mercado. Básicamente, automatiza los procesos de los que ya hemos hablado.

Gracias a el, con unos pocos clics desde tu panel de control podrás activar y desactivar todas estas variables globales de PHP en tu página web WordPress.

The Debug Bar

Este plugin es otra opción perfectamente viable para acceder al WP_DEBUG de WordPress que se puede utilizar junto con WP Debugging.

Además, este plugin cuenta con herramientas para desarrolladores más avanzados que te permitirá entre otras cosas ver el caché de la web, ver las consultas que se han generado, cuales han sido los resultados de las consultas y, en definitiva, te proporcionará información más avanzada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Consigue un 10% de descuento para desinfectar tu página web ¡Ya no tendrás excusas!