Enrique J. Ros

Cómo localizar la causa de cualquier error en WordPress

Es inevitable que, antes o después, surja algún error en una web. No necesariamente un error grave que deje la web fuera de servicio, que también, sino incluso pequeños errores que rompen la visualización, hacen que funcionalidades que antes funcionaban perfectamente dejen de hacerlo, o que simplemente sean molestas a la hora de gestionar la web.

Y las razones pueden ser muchísimas. Tantas, que a veces no tenemos ni la más mínima pista de cuál es la causa o dónde empezar a buscar. Así que vamos a ver cómo localizar la causa de cualquier error que se produzca en nuestra web.

Localizar errores en WordPress

Que sí, que es inevitable por mucho cuidado que lleves. Desde errores catastróficos que te tumban la web (aquí tienes algo que te puede ayudar en un caso así) hasta simplemente avisos molestos o tareas que se hacen incómodas porque no podemos realizarlas bien por culpa de algo que no funciona correctamente.

Y claro, cuando sabes cuál es la causa del error, pues lo arreglas y ya está; y, si no sabes, buscas en Google cómo solucionarlo. Pero, ¿qué pasa si no puedes relacionar el error con una causa concreta? Una funcionalidad que se pierde después de haber estado actuando correctamente o el temido pantallazo en blanco de WordPress.

¿Qué hacer en un caso así?

Metodología para localizar la causa de un error en WordPress

Bueno, pues en estos casos siempre, lo más importante, es aplicar inmediatamente un sencillo método de dos pasos:

  1. No entrar en pánico
  2. Buscar la causa de forma metódica

Sí, estarás pensando que me he quedado más ancho que largo soltando esa perla 🙂 pero realmente es así: da igual que no sepas la causa del error, con unas sencillas comprobaciones metódicas lo vamos a localizar.

Y, por supuesto, lo más importante es el punto uno: no entres en pánico. Sí, tu web está caída, pero de momento no ha muerto nadie, así que tranquilo, respira y actúa con cabeza: todo tiene solución, pero si no eres capaz de pensar con calma no podrás arreglar nada.

Desactiva todos los plugins

Basándome en mi experiencia el 95% (a ojo de buen cubero) de los errores están causados por un plugin o por una incompatibilidad entre plugins. Y hablo de errores que abarcan toda la gama, desde el pantallazo blanco de la muerte (WSOD) hasta simplemente algo que no está funcionando como deberías cuando pulsas el botón así en lugar de asá.

Así que el primer paso es, siempre, desactivar todos los plugins y comprobar si todo vuelve a ser como debe. Evidentemente, si se trata de un error en alguna funcionalidad de WooCommerce deberías desactivar todos los plugins excepto WooCommerce.

Si desactivas los plugins y el error se soluciona, enhorabuena: aún tienes un largo trecho por delante. Porque, claro, tu web sin plugins no te va a servir de nada: necesitas saber cuál de ellos es el culpable.

El método es sencillo: ir activando uno a uno mientras compruebas si vuelve a surgir el error. En el momento en que reaparezca, quizá tengas al culpable.

Y digo quizá porque he llegado a encontrar casos en los que la causa del error era no uno, sino dos plugins: con cada uno de ellos activado de forma independiente la web funcionaba perfectamente, si activabas los dos a la vez aparecía el error. Cosas así pueden volverte loco, pero siendo metódico en este apartado los localizarás.

Desactivar los plugins si has perdido el acceso a la web

En determinadas situaciones no puedes desactivar los plugins porque sencillamente no puedes acceder a la web: en caso de un error de redirecciones en bucle, un error grave de PHP en un script que cargue en el área de administración, etcétera.

En este caso tendrás que acceder mediante FTP (o, en su defecto, a través del gestor de archivos de tu hosting) y simplemente cambiar el nombre de la carpeta plugins (que se encuentra dentro del directorio wp-content). De esta forma WordPress no encuentra la ruta a los archivos de plugins y automáticamente se desactivan todos.

Si eso soluciona el error, de nuevo tienes que localizar el culpable: vuelve a restablecer el nombre de la carpeta plugins y ve, uno por uno, cambiando el nombre de los directorios que hay en su interior, que corresponden a cada uno de los plugins.

Al hacerlo con el culpable todo volverá a su sitio.

Volver a la plantilla por defecto

A veces el culpable no es un plugin, sino la plantilla. En caso de que el paso anterior no haya funcionado lo siguiente es probar a cambiar momentáneamente al theme por defecto (cualquier twenty-loquesea: Twenty Twelve, Twenty Fifteen, Twenty Seventeen…) o, si estás comprobando un error en WooCommerce, a Storefront.

Cuidado porque el que eso solucione el error no significa que el culpable sea la propia plantilla, quizá has sido tú mismo: ¿has incluido algún código en el archivo functions.php, de esas que has encontrado googleando por ahí?

Desactivar la plantilla inactiva también cualquier función que haya en functions.php, así que quizá la causa esté ahí. Otro buen motivo para utilizar un plugin de funciones en lugar de escribir ahí nuestro código personalizado.

Desactivar la plantilla sin tener acceso al panel de control

Al igual que con los plugins, podemos encontrarnos aquí con que no tenemos acceso al panel de control. De hecho, aquí es habitual encontrarnos con algo así: encuentras un código por ahí, lo pegas en functions.php y cuando guardas… ¡hala, se vino todo a la m…!

La metodología es similar al caso de los plugins, aunque esta vez no hay que renombrar el directorio que contiene los temas, sino la carpeta del tema que está activo (que encontrarás dentro de /wp-content/themes). Al hacerlo la web perderá todos los estilos, pero tendrás de nuevo acceso al panel de control.

Los permalinks y el archivo htaccess

Hay determinado tipo de fallos que, de primeras, se ve bastante claro que su causa está en la configuración de las reglas de rewrite en el servidor: redirecciones extrañas o en bucle, errores 404 a mansalva…

En estos casos también hay una metodología, bastante sencilla. Lo primero, ir a Ajustes > Enlaces permanentes y, sin necesidad de cambiar nada, simplemente darle a Guardar.

Si eso no lo ha solucionado o, de nuevo, no tienes acceso al panel de control (típico de las redirecciones en bucle) deberás de nuevo acceder por FTP y eliminar el archivo .htaccess. Haz primero una copia de seguridad, por si él no es el culpable y tienes otras directivas en él además de los permalinks (la caché del navegador o la compresión de archivos, por ejemplo, pueden estar configurados por medio de ese archivo).

Si eliminarlo soluciona el fallo ya simplemente te quedar ir, ahora sí, a guardar los ajustes de enlaces permanentes.

Si nada de eso funciona

Al margen de algunos problemas muy concretos, llegados a este punto habrás podido solucionar el 99,99% (de nuevo, estadística calculada a ojo) de los errores que se producen en una web con WordPress.

Sin embargo hay ciertos errores puñeteros que persisten una vez comprobado todo esto. Además suelen ser errores bastante genéricos (error 500, error 403, etcétera) que pueden tener innumerables causas generadas por innumerables componentes, incluso ajenos a la web (como los permisos de los archivos, la configuración del servidor).

LLegados a este punto es absolutamente necesario recopilar información para intentar dar con la causa. Y para eso tenemos dos aliados:

El modo debug en WordPress

El modo debug consiste básicamente en decirle a WordPress que muestre en pantalla absolutamente todos los avisos y mensajes de error (mensajes de depuración, técnicamente) que se produzcan.

Esto normalmente ha de estar desactivado, ya que en PHP se generan mensajes de aviso por causas totalmente inocuas, pero relevantes para los desarrolladores, como una variable sin declarar. De tenerlo activado se mostrarían continuamente en la web avisos de ese tipo.

Pero en caso de estar produciéndose un error sin identificar, activar el modo debug puede ser la diferencia entre ver simplemente una pantalla en blanco y ver una descripción precisa del archivo y línea de instrucción que ha generado el error. Oro molido a la hora de identificarlo y subsanarlo.

Activar el modo debug

Para activarlo hay que, de nuevo, acudir al FTP, ya que se hace definiendo una constante en el archivo wp-config.php. Simplemente hay que editar ese archivo y buscar la línea (puede que no esté):

define('WP_DEBUG', false);

y cambiarla por:

define('WP_DEBUG', true);

Si no hay ninguna línea así, simplemente añadimos esta sentencia en una línea en algún punto por encima de la que dice ¡Eso es todo, deja de editar! Feliz blogging. Podemos habilitar además el log de debug, para lo que tendremos que añadir, además, esta otra línea:

define('WP_DEBUG_LOG', true);

De esta forma todos los mensaje de depuración quedan registrados en un archivo de texto, en /wp-content/debug.log, que podremos revisar en busca de la información que necesitamos para localizar la causa del error que nos trae de cabeza.

Recuerda desactivar después el modo de depuración (devolviendo la constante WP_DEBUG a su valor false) para que no se estén mostrando en la web decenas de mensajes de aviso.

Los logs del servidor

Además, siempre tienes a tu disposición los logs del servidor, que te pueden ayudar a localizar cualquier error, en especial aquellos causados por PHP. Simplemente tienes que conectar por FTP (de nuevo, puedes también usar el gestor de archivos de tu hosting) y buscar en la raíz del servidor o dentro del directorio logs los archivos errors.log, php_errors.log o similares.

Si consultas el final del archivo (la información se va añadiendo en líneas sucesivas, hacia abajo) podrás ver los últimos errores. Te será sencillo, porque al comienzo de cada línea se registra la fecha y hora exacta en que se produjo el aviso.

[04-Oct-2017 13:00:39 Europe/Madrid] PHP Deprecated:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0

Sí, cierto, los mensajes pueden ser algo crípticos, sobre todo si se trata de un error en cadena, pero sin duda te pueden poner sobre la pista cuando no sabes qué está pasando.

Errores habituales en WordPress

De todos modos, normalmente no hay que llegar tan lejos, la inmensa mayoría de las veces se soluciona con los primeros pasos que he explicado en el artículo, o bien se trata de un error habitual y bien documentado, para el que no te costará encontrar solución en este mismo blog:

Y si después de todo este tinglado no has podido localizarlo, o si aún después de localizarlo no consigues solucionarlo, siempre puedes recurrir a mi servicio de resolución de emergencias.

Salir de la versión móvil