Debugear WordPress con WP_DEBUG y Query Monitor
PHP
22

Activar el modo debug sin romper nada

WordPress trae un sistema de depuración incorporado que por defecto está apagado en producción. Para activarlo abre wp-config.php y agrega estas constantes antes de la línea "That's all, stop editing!":

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

¿Qué hace cada una? WP_DEBUG enciende el modo depuración. WP_DEBUG_LOG escribe todos los errores en wp-content/debug.log. WP_DEBUG_DISPLAY en false evita que los errores se muestren al visitante en pantalla, que es lo que queremos en un sitio público. La línea de display_errors refuerza esa protección a nivel de PHP.

Leer el debug.log

Cuando algo falle, conecta por FTP o SSH y revisa wp-content/debug.log. Verás líneas del tipo PHP Notice, PHP Warning o PHP Fatal error con la ruta exacta del archivo y el número de línea. Ordena los errores por frecuencia: un aviso que se repite miles de veces suele apuntar a un plugin mal hecho. Cuando termines de depurar, vacía el archivo o cambia WP_DEBUG_LOG a false para no llenar el disco.

Debug condicional

Si el problema solo aparece en producción y no puedes dejar el debug encendido para todos, actívalo solo para tu IP:

if ( $_SERVER['REMOTE_ADDR'] === '203.0.113.10' ) {
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
}

Query Monitor: la radiografía de tu sitio

El plugin gratuito Query Monitor es el complemento ideal a WP_DEBUG. Una vez instalado y activo, agrega un menú flotante en la barra de administración con información valiosa que no verás de otra forma:

  • Queries a la base de datos: cuántas se ejecutan, cuáles son lentas y qué plugin o tema las dispara.
  • Hooks disparados: lista de todos los actions y filters ejecutados en la carga actual y qué funciones se engancharon a ellos.
  • HTTP API: muestra las peticiones remotas que hace WordPress (a wordpress.org, a APIs externas) con su tiempo de respuesta.
  • Scripts y estilos: qué assets se encolaron, sus dependencias y su tamaño.
  • Errores de PHP en tiempo real: notices y warnings destacados sin tener que abrir el debug.log.

Flujo típico de depuración

Cuando un sitio va lento o algo no funciona, activa WP_DEBUG, instala Query Monitor y recarga la página con problemas. Revisa primero las queries lentas: si detectas una query repitiéndose cien veces, probablemente un plugin no usa caché de objetos. Luego mira los hooks y los errores: casi siempre la raíz del problema aparece ahí, en minutos en lugar de horas. Antes de devolver el sitio al público, vuelve a apagar WP_DEBUG y desactiva Query Monitor para los visitantes (o limítalo a administradores desde sus ajustes).