Salvavidas, de Olia Nayda

El otro día recibí la llamada de un amigo explicándome que, en su trabajo, le habían asignado el mantenimiento de un antiguo proyecto WordPress. Según me comentó, la web llevaba más de tres años sin actualizarse y fallaba por todos lados. El pobre estaba totalmente bloqueado, porque no podía actualizar nada a versiones más recientes. Pero es que tampoco podía actualizar el contenido en sí: si intentaba crear nuevas entradas en el blog o modificar páginas existentes, WordPress fallaba y devolvía un error. Tenía un ladrillo por web, vaya. Así que decidí echarle una mano.

Cuando tenemos una web en WordPress con la que no podemos trabajar, que da errores cada dos por tres y que no podemos actualizar, lo primero que debemos hacer es identificar qué partes son las que están dando problemas. Normalmente, los problemas que puedes encontrar en una web son culpa o bien de tu tema, o bien de alguno de los plugins que estás usando.

Teniendo en cuenta esto, el procedimiento habitual para arreglar un WordPress consiste en identificar al culpable de que falle, eliminarlo de la ecuación, actualizar todo y, finalmente, ver si podemos reintegrar al culpable en nuestra web o es mejor buscarle un sustituto. Hoy te voy a contar cuatro sencillos trucos para descubrir por qué falla una web y, así, poder arreglarla.

Usando el registro de errores de nuestro servidor

Si partimos de la hipótesis de que los errores que tenemos en nuestra web son fruto de alguno de los plugins que tenemos instalados, lo primero que debemos hacer es validar dicha hipótesis. Para ello existen diferentes fórmulas. La primera y, en mi opinión, ideal es, ¿cómo no?, acceder a nuestro cPanel para echar un vistazo al registro de errores de nuestra web:

Registro de errores en cPanel
Registro de errores en cPanel.

Con suerte, en el registro no solo encontraremos un rastro de los errores que se han producido en nuestra web, sino que además sabremos «dónde» se han generado y, por lo tanto, cuál es el culpable. Por ejemplo, el otro día, desarrollando en local, vi la siguiente traza en el registro de errores de mi servidor:

appserver_1  | [Mon Aug 24 09:18:20.977541 2020] [php7:notice] [pid 1107] [client 172.20.0.2:34396] PHP Notice:  register_rest_route was called <strong>incorrectly</strong>. The REST API route definition for <code>yoast/v1/get_head</code> is missing the
 required <code>permission_callback</code> argument. For REST API routes that are intended to be public, use <code>__return_true</code> as the permission callback. Please see <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugg
ing in WordPress</a> for more information. (This message was added in version 5.5.0.) in /app/.lando/wordpress/wp-includes/functions.php on line 5225, referer: http://nab5.lndo.site/wp-admin/edit.php                                                      

En este caso en concreto, la entrada en el registro me indica que el error se ha generado en uno de los ficheros propios de WordPress (wp-includes/functions.php), lo cual no es muy útil para identificar al plugin en cuestión. Pero si lees el mensaje en sí, verás que explica qué es lo que ha fallado (una llamada a la función register_rest_route) con la ruta yoast/v1/get_head, con lo cual ya tenemos identificado al culpable: Yoast. ¿Y cómo lo arreglamos? Pues, en mi caso, actualizando Yoast a la última versión 😉

Desactivando plugins desde el Escritorio de WordPress

Por desgracia, no siempre es posible acceder al registro de errores de una web para saber qué está fallando. O, a veces, incluso teniendo acceso, el registro está incompleto o no nos da la información que necesitamos. En estos casos tenemos que aplicar fórmulas originales para validar la hipótesis de partida: «lo que falla es un plugin».

Si creemos que nuestra web está fallando por culpa de un plugin defectuoso, lo más sencillo es desactivar todos los plugins y comprobar si el error desaparece o no. Si lo hace, el culpable era un plugin. Si persiste, el problema está en otro lado.

Para ello, lo único que tienes que hacer es ir al escritorio de WordPress » Plugins, seleccionas todos los plugins y le das a la acción en lote Desactivar:

Desactivar plugins usando las acciones en lote
Cómo desactivar plugins usando las acciones en lote.

luego realizas las comprobaciones pertinentes y verificas o desmientes tu teoría.

Si efectivamente se trataba de un plugin, ahora solo te queda descubrir cuál es exactamente. Para ello, puedes ir activando los plugins uno a uno y comprobar en qué momento el error vuelve a aparecer. O, aún mejor, puedes aplicar una metodología un poco diferente (y muchísimo más rápida):

  1. Activas la mitad de tus plugins.
    1. Si el error vuelve a aparecer, el culpable está en esa mitad, así que puedes activar la otra mitad tranquilamente.
    2. Si el error no aparece, el culpable está en la otra mitad.
  2. Una vez sabes en cuál de las dos mitades está el culpable, nos vamos a centrar solo en ella, repitiendo el paso 1: activar solo la mitad de esa mitad (lo que sería una cuarta parte del total) y desactivar la otra mitad, para comprobar si aparece o no el error.
  3. Repetir el proceso hasta que des con el culpable.

Una vez sabes cuál es el plugin que falla, cómo solucionar el problema depende de ti. Quizás tengas que contactar con el desarrollador, intentar arreglar el plugin tú mismo o incluso plantearte dejarlo de lado y buscar una alternativa. En el ejemplo que te he puesto anterior, bastaba con actualizar el plugin de Yoast a la última versión, pero no siempre tendrás esa suerte.

Nelio Unlocker

Pásate a WordPress manteniendo tus diseños y contenidos

Mejora hoy mismo el SEO de tu web y acelera su velocidad de carga convirtiendo tus páginas a estándares HTML, CSS y WordPress. No necesitas conocimientos técnicos y solo pagarás por aquello que necesites.

Ten una copia a mano de los plugins que tenías activos

¿Recuerdas a mi amigo del principio? Cuando estuvimos investigando su web, fuimos siguiendo los pasos que te estoy contando hoy. Y, entre esos pasos, intentamos descubrir si había un plugin problemático desactivando todos los plugins de su web…

Y nos encontramos con la página en blanco de la muerte.

Gif divertido de un hombre tapándose la boca con la mano mostrando una gran sorpresa

Al parecer la web estaba llena de plugins hechos a medida y adaptaciones en el tema, todo ello con una cantidad de dependencias cruzadas bestial. Al desactivar los plugins, desaparecieron funciones de las que el tema dependía y la web petaba por todos lados.

Si bien esto es una mala práctica y se podría criticar al desarrollador que lo implementó (un tema no puede depender de un plugin; debe implementar comprobaciones de seguridad para validar si una cierta funcionalidad está disponible o no), la realidad para nosotros seguía siendo que la web, de repente, estaba totalmente fuera de servicio. Pudimos recuperarla a través de un backup, pero aprovecho para contarte un pequeño truco.

En la tabla wp_options de WordPress hay una opción llamada active_plugins. Ahí hay un array con todos los plugins que hay activados en tu web. Antes de desactivar los plugins usando la acción en lotes que te comentaba, guarda el valor de dicha opción en un documento de texto:

Plugins activos en la base de datos
Plugins activos en la base de datos.

de esta forma, si «desactivar todos los plugins» acaba resultando en un improbable (pero no imposible) WSOD, puedes reactivar todos los plugins actualizando la opción active_plugins en la base de datos con el valor original que has guardado.

Cómo desactivar plugins usando FTP

Si sabes que tu problema lo está generando un plugin concreto pero no tienes forma de desactivarlo desde el escritorio de WordPress, puedes hacerlo tranquilamente usando FTP.

Como ya sabes, los plugins no son más que un conjunto de ficheros con código que metemos en nuestro WordPress. Cuando instalas un nuevo plugin en tu web, su código acaba en la carpeta wp-content/plugins de WordPress. Aprovechando este conocimiento, podemos ir a buscar la carpeta del plugin para desactivarlo.

Ve al cPanel de tu servidor y buscar la opción de FTP:

Opción FTP en cPanel
Opción FTP en cPanel.

Luego, usando el explorador de ficheros del FTP, busca la carpeta wp-content/plugins y localiza la carpeta del plugin problemático:

Explorador de ficheros de cPanel
Explorador de ficheros de cPanel.

Finalmente, cambia el nombre a la carpeta (o bórrala) para desactivar el plugin de WordPress. Cuando vuelvas a entrar en tu web, a WordPress le constará que ese plugin está activo, pero no será capaz de encontrarlo (porque le hemos cambiado el nombre a su carpeta o incluso lo hemos borrado), con lo que no lo cargará en memoria y los errores que generaba habrán desaparecido.

Usar un tema por defecto

Finalmente, si la hipótesis de que el problema lo originaba alguno de tus plugins ha resultado ser falsa, el siguiente paso es suponer que el culpable es tu tema. En este caso, lo único que debes hacer es instalar un tema por defecto de los de WordPress (como, por ejemplo, Twenty Twenty) y ver si el problema desaparece o no. Si desaparece, ya sabes que hay algo en tu tema original que falla. Si no, la cosa es más complicada de lo que pensamos.

Aunque no voy a extenderme mucho en este apartado, todas las técnicas que te he comentado más arriba (base de datos y FTP) son también aplicables aquí. Si, por lo que fuera, no tuvieras acceso al escritorio de WordPress, puedes instalar un tema nuevo en tu web subiéndolo vía FTP y cambiando el tema activo desde la base de datos: en la tabla wp_options, opciones template y stylesheet (ambas con valor twentytwenty).

En resumen

Es difícil que un WordPress «pelado» (sin plugins o sin un tema personalizado) falle. Así que, si tienes problemas en tu web, lo más probable es que el culpable sea alguno de tus plugins o tu tema. En la entrada de hoy hemos visto diferentes fórmulas para encontrar al culpable, quitarlo de en medio y volver a tener la web operativa. Espero de corazón que no necesites usar ninguno de los trucos que te he contado aquí… pero, si lo necesitas, confío en que te ayuden.

¿Y qué pasó con la web de mi amigo?, te preguntarás. Pues se comenta que aún está intentando actualizarla…

Imagen destacada de Olia Nayda en Unsplash.

2 respuestas a «4 trucos para arreglar una web WordPress»

  1. Avatar de Vecino
    Vecino

    Me parece una puta mierda y se nota que no teneis ni idea.

    1. Avatar de David Aguilera

      Todo depende del tipo de problema que tengas, claro; si te han infectado la web (ya sea los ficheros del núcleo de WordPress como la base de datos), estos pequeños trucos no te van a ayudar. En cualquier caso, y de cara a ayudar a los demás lectores: ¿qué artículo recomiendas?

Deja una respuesta

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

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.