Depuración en WordPress

La depuración del código PHP es parte de cualquier proyecto, pero WordPress viene con sistemas de depuración específicos diseñados para simplificar el proceso y estandarizar el código en el núcleo, plugins y temas. Esta página describe las diversas herramientas de depuración en WordPress y cómo ser más productivo en su codificación, así como aumentar la calidad general y la interoperatividad de su código.

Para el usuario no programador o general, estas opciones se pueden usar para mostrar la información detallada del error.

WP_DEBUG

WP_DEBUG es una constante de PHP (una variable global permanente) que se puede usar para activar el modo de “depuración” en todo WordPress. Se supone que está en “false” de forma predeterminada y generalmente se establece en “true” en el archivo wp-config.php en las copias de desarrollo de WordPress.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG', false );

NOTA: Los valores true y false en el ejemplo no están rodeados por apóstrofes (‘) porque son valores booleanos (verdadero/falso). Si establece constantes en 'false', serán interpretados como verdaderos porque las comillas lo convierten en una cadena en lugar de un booleano.

No se recomienda usar WP_DEBUG u otras herramientas de depuración en sitios activos; están destinados a pruebas locales e instalaciones de montaje.

Errores PHP, advertencias y avisos

Habilitar WP_DEBUG hará que se muestren todos los errores, avisos y advertencias de PHP. Es probable que esto modifique el comportamiento predeterminado de PHP que solo muestra errores fatales y/o muestra una pantalla blanca de muerte cuando se alcanzan los errores.

Mostrar todos los avisos y advertencias de PHP a menudo da como resultado mensajes de error para cosas que no parecen estar rotas, pero que no siguen las convenciones de validación de datos adecuadas dentro de PHP. Estas advertencias son fáciles de corregir una vez que se ha identificado el código relevante, y el código resultante casi siempre es más resistente a errores y más fácil de mantener.

Funciones y argumentos obsoletos

Habilitar WP_DEBUG también provocará avisos sobre funciones y argumentos obsoletos dentro de WordPress que se están utilizando en su sitio. Estas son funciones o argumentos de función que aún no se han eliminado del código central pero que están programadas para su eliminación en un futuro próximo. Los avisos de desaprobación a menudo indican la nueva función que debería usarse en su lugar.

WP_DEBUG_LOG

WP_DEBUG_LOG es un complemento de WP_DEBUG que hace que todos los errores también se guarden en un archivo de registro debug.log Esto es útil si desea revisar todos los avisos más tarde o si necesita ver los avisos generados fuera de la pantalla (por ej., durante una solicitud AJAX o wp-cron correr).

Tenga en cuenta que esto le permite escribir en el archivo de registro utilizando la función integrada error_log() de PHP, que puede ser útil, por ejemplo, al depurar eventos Ajax.

Cuando se establece en true, el registro se guarda en wp-content/debug.log dentro del sistema de archivos de su sitio. Alternativamente, puede establecerlo en una ruta de archivo válida para que el archivo se guarde en otro lugar.

define( 'WP_DEBUG_LOG', true );
-o-
define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Nota: Para que WP_DEBUG_LOG haga algo, WP_DEBUG debe estar habilitado (true). Recuerde que puede desactivar WP_DEBUG_DISPLAY de forma independiente.

WP_DEBUG_DISPLAY

WP_DEBUG_DISPLAY es otro compañero de WP_DEBUG que controla si los mensajes de depuración se muestran dentro del HTML de las páginas o no. El valor predeterminado es “true”, que muestra errores y advertencias a medida que se generan. Establecer esto en “false” ocultará todos los errores. Esto debe usarse junto con WP_DEBUG_LOG para que los errores puedan revisarse más tarde.

define( 'WP_DEBUG_DISPLAY', false );

NOTA: Para que WP_DEBUG_DISPLAY haga algo, WP_DEBUG debe estar habilitado (true). Recuerde que puede controlar WP_DEBUG_LOG de forma independiente.

SCRIPT_DEBUG

SCRIPT_DEBUG es una constante relacionada que obligará a WordPress a usar las versiones “dev” de los principales archivos CSS y JavaScript en lugar de las versiones minificadas que normalmente se cargan. Esto es útil cuando está probando modificaciones a cualquier archivo .js o .css incorporado. El valor predeterminado es “false”.

define( 'SCRIPT_DEBUG', true );

SAVEQUERIES

La definición SAVEQUERIES guarda las consultas de la base de datos en una array y ese array se puede mostrar para ayudar a analizar esas consultas. La constante definida como “true” hace que cada consulta se guarde, cuánto tiempo tardó en ejecutarse y qué función la llamó.

define( 'SAVEQUERIES', true );

El array se almacena en el global $wpdb->queries.

NOTA: Esto tendrá un impacto en el rendimiento de su sitio, así que asegúrese de desactivarlo cuando no esté depurando.

Ejemplo wp-config.php para depuración

El siguiente código, insertado en su archivo wp-config.php, registrará todos los errores, avisos y advertencias en un archivo llamado debug.log en el directorio wp-content. También ocultará los errores para que no interrumpan la generación de la página.

// Habilitar el modo WP_DEBUG
define( 'WP_DEBUG', true );

// Habilite el registro de depuración en el archivo /wp-content/debug.log
define( 'WP_DEBUG_LOG', true );

// Desactiva la visualización de errores y advertencias
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

// Utilice versiones de desarrollo de los archivos JS y CSS principales (solo es necesario si está modificando estos archivos principales)
define( 'SCRIPT_DEBUG', true );

NOTA: Debes de insertar esto ANTES de /* That's all, stop editing! Happy blogging. */ En el archivo wp-config.php.

Plugins de depuración

Hay muchos plugins de depuración para WordPress que muestran más información sobre los componentes internos, ya sea para un componente específico o en general. Aquí hay unos ejemplos:

Recursos externos