Uno de los errores más frustrantes que podemos encontrarnos en una web es el error 500. En este post iré recopilando posibles soluciones para resolverlo en WordPress ¿Empezamos?
Antes que nada, debemos tener en cuenta que el error 500 puede deberse a muchos motivos, generalmente relacionados con el servidor. Puede ser que un plugin esté utilizando demasiados recursos, haya una mala configuración… etc.
Por eso, antes de probar nada lo mejor es que investigues en los registros de errores para ver si te sale algo útil. Dependiendo del tipo de hosting que tengas, es posible que debas contactar a soporte para que lo miren por ti. Si los registros no dicen nada relevante, puedes ir probando las soluciones que voy a ir añadiendo en este post.
Reemplazar el cron de WordPress por un cron «de verdad»
No se si lo sabes, pero cuando programas acciones en WordPress (por ejemplo, un post programado) utilizas funciones cron. Sin embargo, el cron que viene por defecto en WordPress no es un cron «de verdad». Se trata de un proceso llamado WP-cron, que en algunos servidores puede dar problemas, especialmente si tienes muchos «WordPress» funcionando al mismo tiempo.
Diferencia entre el cron de WordPress y un cron «normal» de GNU/Linux
Los trabajos cron de GNU/Linux pueden ser controlados por el usuario, asegurándose de que los elementos restringidos por programación se ejecuten de manera adecuada. Además, para un sitio de alto tráfico con WordPress, un trabajo de cron de Linux puede ayudar a reducir las posibilidades de tiempo de inactividad reduciendo el ancho de banda en el servidor, utilizando menos recursos de mismo.
WP-cron es un cron virtual que solo funciona cuando se carga la página. WP-cron es cargado primero por WordPress cuando se solicita una página en la parte frontal o en la administración de un sitio, momento en el cual WP-cron muestra la página necesaria al visitante. Aunque es conveniente, se sabe que falla por una variedad de razones, que incluyen pero no se limitan a lo siguiente:
- Conflicto de complementos
- Problemas relacionados con DNS
- Errores de WordPress
- Uso de complementos de almacenamiento en caché
- Carga de servidor grande
En otras palabras ¡Puede causar un error 500!
Cómo usar un cron de GNU/Linux en WordPress
Lo mejor que puedes hacer para optimizar la eficiencia de los procesos cron de WordPress es quitar el WP-cron y sustituirlo por un cron normal de GNU/Linux. Es más fácil de lo que piensas, y te voy a explicar todo el proceso paso a paso. En este tutorial voy a asumir que estás utilizando hostgator, o cualquier hosting con cPanel. Si aún no lo tienes, puedes ver las mejores ofertas actualizadas en este enlace.
Sin embargo, si tienes acceso a cron de otra manera (por ejemplo desde consola), puedes configurarlo a través de ahí de manera similar, si tienes el conocimiento para ello.
1) Deshabilitar WP-cron
Para deshabilitar el WP-cron debes modificar el archivo «wp-config.php» que se encuentra en la raíz de la instalación de WordPress. Tras la etiqueta «<?php» escribe en una nueva línea lo siguiente:
define('DISABLE_WP_CRON', true);
2) Configurar el cron de GNU/Linux en cPanel
Voy a entender que tienes una cierta base sobre lo que es un cron job en GNU/Linux y cómo funciona, por lo que voy a explicar esta parte del proceso bastante ligera.
- Entra en tu cPanel
- Vete a la sección de «Avanzado» y luego a «Cron Jobs»
- Dale a «Añadir nuevo Cron Job» y elige el intervalo. Te recomiendo que no elijas un intervalo menor a 15 minutos porque la puedes liar
- El comando que ejecutaremos en este cron job es:
wget -q -O - http://TUSITIO.COM/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Como ves, ejecutamos mediante un wget la orden, donde TUSITIO.COM es el dominio de tu WordPress. Importante tener en cuenta si va por HTTP o HTTPS. Asumo que sabes lo que estamos haciendo.
- Dale a «Añadir Cron Job» para que se guarde, y ya está
Si lo has hecho correctamente, ahora tu WordPress no depende de WP-Cron sino que funciona mediante el cron de tu servidor.
Si quieres ver el proceso con algo más de detalle, te dejo este vídeo en inglés donde te lo explican bastante bien:
Espero que te haya servido este artículo ¿Conoces otras soluciones para el error 500 en WordPress? Déjamelas en los comentarios, y no olvides compartirlo en tus redes sociales para que también le sirva a más personas ¡Hasta pronto!