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).