El archivo wp-cron.php de WordPress: Qué es y porqué deberías desactivarlo

Desactivar wp cron WordPress

Cuando empiezas tu nueva web, va de lujo.

Pocas visitas, pocos plugins, nada de problemas.

Bueno…

También he visto páginas web con WordPress con pocas visitas, pero una cantidad de plugins que hacía que no cargase rápido.

Pero hay más allá que quitar plugins, instalar un plugin de caché, optimizar las imágenes, etc.

Optimizar WordPress tiene mucha más miga.

Y el archivo wp-cron.php de WordPress es una de esas tareas que no se debería dejar pasar.

¿Qué es y para qué sirve el archivo wp-cron.php?

El archivo wp-cron.php es básicamente un archivo de programación de tareas.

Se encarga de ejecutar las tareas programadas de tu WordPress.

Pueden ser por ejemplo las tareas del mismo WordPress:

  • Revisar si hay nuevas actualizaciones para WordPress, temas y plugins.
  • Publicar los artículos que tenemos programados.
  • Y otras tareas de WordPress.

O realizar las tareas programadas de plugins:

  • Realizar copias de seguridad de tu web, como es el caso de UpdraftPlus.
  • Publicar en nuestras redes sociales nuestros artículos antiguos cada x tiempo.
  • Realizar análisis programados con plugins de seguridad como WordFence.
  • Y toda tarea que se ejecute de forma automática.

Los problemas de wp-cron.php y por qué deberías desactivarlo

Es una función muy útil y que la necesitamos a diario en nuestra web.

Si ella no podríamos realizar muchas de las tareas.

Pero también tiene su parte negativa.

Resulta que este archivo se ejecuta cada vez que nosotros o alguien entra a nuestra web.

Pero… ¿qué pasa cuando tenemos una web con miles de visitas diarias?

Pues que esa programación se ejecuta todas esas miles de veces diariamente.

Eso hace que se usen más recursos del hosting.

Cuando esos recursos aumentan y llegan a su límite, el servidor empieza a caerse.

Osea que nos encontramos los famosos errores 500 de WordPress.

A la larga esos errores afectarán a las visitas de tu web, porque los buscadores lo penalizan.

Pero a corto tiempo perderás ventas y tus visitantes se verán afectados.

Por eso la importancia de desactivarlo y programarlo de forma correcta.

Así que veamos como hacerlo.

Desactivando el archivo en WordPress

Antes de nada y estés o no recibiendo fallos en tu servidor.

Lo primero es desactivarlo de WordPress para evitar que nos ocurran.

Para ello deberemos de editar el archivo wp-config.php, que al igual que el wp-cron.php, se encuentra en la raíz de la instalación de WordPress.

Puedes hacerlo desde el mismo editor del hosting o con algún programa FTP como Filezilla.

Coloca en él lo siguiente:

define('DISABLE_WP_CRON', true);

Con esto ya quedará desactivado.

Pero ahora todas esas funciones de las que hemos hablado antes.

Quedarán totalmente desactivadas.

Y lo suyo es programarlas para que se ejecuten cada cierto tiempo.

Programando el archivo Cron en Cpanel

Una vez que está desactivado.

Lo que vamos a hacer es programar nuestro servidor para que lo ejecute automáticamente cuando le digamos.

Para ello nos vamos a nuestro hosting y que en mi caso lo voy a explicar en Cpanel, que es el panel de alojamiento más usado.

Cpanel opciones avanzadas

¿Quieres tener un WordPress rápido desde YA?
Descarga gratis mi checklist WPO. ¡Es gratis!

La quiero

Vamos bajando hasta llegar a un panel que pone Avanzadas y entramos en Cron trabajos.

Programar wp-cron.php de WordPress en Cpanel

Para programar correctamente el archivo tenemos 2 tareas sencillas.

Nos vamos al apartado Añadir un nuevo trabajo de Cron.

Por un lado elegiremos el tiempo que queremos que se ejecute Cron.

Puedes hacerlo a mano, pero yo por ejemplo he elegido la opción de 2 veces a la hora en Configuración común, que son suficientes para mi uso.

Al elegirlo, se ajusta automáticamente el resto de parámetros.

Ya que se ejecutará cada 30 minutos y el asterisco significa que serán todas la horas, días, meses, etc.

Ahora nos queda poner la url del archivo Cron de WordPress en Comando.

Yo que tú le preguntaría a tu hosting por este parámetro.

En el caso de mi hosting Siteground, la url completa sería:

/usr/local/bin/php /home/usuario/public_html/wp-cron.php

Sustituyendo usuario por el usuario de tu alojamiento.

Lo primero es la ruta de PHP y lo segundo donde se encuentra el archivo de WordPress.

Le das a Añadir nuevo trabajo de Cron y listo.

Ya nos aparecerá en el apartado Trabajos de Cron actuales.

Nuestro hosting ejecutará el archivo de forma automática de la forma programada.

Revisando que todo funcione correctamente

Una vez que todo está listo.

Yo que tú verificaría que todo funciona bien.

¿Y como se haría?

Pues muy sencillo.

Puedes programar una entrada a ver si se publica o puedes verificar que las copias de seguridad programadas se hacen de forma correcta.

Si se ejecutan es que todo está correcto.

Y si no, puede que la ruta de Cron no esté correcta.

Consejos finales

Sé que puede ser una tarea algo complicada si nunca lo has hecho.

Pero es muy recomendable para que nuestro WordPress funcione correctamente.

Piensa que si cambias de hosting, Cron quedará desactivado en WordPress.

Así que deberás de volverlo a programar en el nuevo alojamiento.

Yo he configurado el mio cada 30 minutos.

No creo que una web se tenga que programar menos tiempo.

Porque me extraña que se publiquen más de 2 artículos a la hora o se hagan tantas copias de seguridad.

Pero ya es cosa tuya el tiempo a configurar.

Otro tema a tener en cuenta es que si en el hosting tienes varias webs.

Deberás añadir una tarea de Cron por cada web desactivada, siempre poniendo correctamente la ruta.

Verás que una vez que hagas esto.

El consumo de recursos de tu web bajará en picado.

¡Valora mi contenido!
[3 votos. Media: 5]
avatar
el más nuevo el más antiguo el más votado
etoretum
Invitado
etoretum

Hola, he encontrado este post ya que recientemente hemos tenido un problema con wp-cron y el consumo de recursos. Así que vamos a seguir tu consejo y mover todo al cron de cpanel. La duda que se me plantea ahora es si tenemos que modificar las horas y/o frecuencia de las tareas en wp-cron antes de mover wp-cron a cpanel. Es decir, si en cpanel programo wp-cron para que se ejecute a la 01:00AM y en wp-cron tengo tareas programadas para ejecutarse por ejemplo a las 06:00, se ejecutarían a las 01:00 o wp-cron estaría activo hasta las 06:00 para ejecutar estas tareas? No acabo de entender como se comportaría wp-cron con el tema de las horas de programación.

MªJosé
Invitado
MªJosé

Hola,

Antes de nada, muchas gracias por este artículo tan útil y esta magnífica idea para aligerar el tráfico en wordpress.

Ahora bien, he tratado de ponerlo en práctica pero haciendo las pruebas de programación del cron me está dando el siguiente error de conexión a BD:

Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /home/usuario/public_html/wp-includes/wp-db.php on line 1531

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in //home/usuario/public_html/wp-includes/wp-db.php on line 1562

Warning: mysql_connect(): No such file or directory in /home/usuario/public_html/wp-includes/wp-db.php on line 1562

[…]

Error establishing a database connection
This either means that the username and password information in your wp-config.php file is incorrect or we can’t contact the database server at localhost. This could mean your host’s database server is down.

Are you sure you have the correct username and password?
Are you sure that you have typed the correct hostname?
Are you sure that the database server is running?

If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.

**************************************************************************************
**************************************************************************************
Sé que quizá sea mucho pedir pero no estoy encontrando la solución a mi problema por la red. Y dudo mucho que en mi host me quieran/puedan ayudar, puesto que en verdad no es una incidencia suya, ya que la conexión a BD sí funciona correctamente y no está caído. ¿Me podrías echar una mano?

Por si es de ayuda, la url de mi host es la siguiente:

/usr/local/php-5.6/bin/php /home/usuario/public_html/wp-cron.php

Muchas gracias por todo y perdón por la molestia.

Jorge
Invitado
Jorge

Hola Raúl, consulta. ¿cómo averiguo cuál es el directorio raíz de mi Cpanel? lo hice desde /home/miusuario…… pero me han llegado muchísimos correos informando que el cron no se ha ejecutado.

Trujideportes
Invitado
Trujideportes

Excelente consejo para ponerlo en práctica. Definitvamente lo aplicaré a mi web http://www.trujideportes.com.ve – ¡Mil gracias!

Alberto
Invitado
Alberto

Hola Raul,

Escribo en esta noticia porque he desactivado el cron y claro uso el plugin de Siteground SG Optimizer, y al intentar entrar a la configuración de PHP para intentar poner PHP7 pues da este error:

“Error: Compatibility checker relies on the WordPress Cron functionality to operate which is disabled for this site. Please, enable the WordPress Cron and refresh this page. Check out this article for more information on that matter.”

La pregunta es la siguiente, ¿Cómo lo solucionarías tu? ¿Volverías a activar el wp cron para el tema de activar el PHP7?, no tengo claro para que necesita el plugin el wp cron, quizás es para comprobar si tus plugins y tu theme es compatible con la versión de php que vas a activar, pero hay alguna forma de poder testearlo sin tener que volver a activar el wp cron?.

Un saludo y gracias por tu respuesta de antemano.

Alberto
Invitado
Alberto

Hola Raul,

Te escribo para decirte que he desactivado correctamente el wp-cron con este manual y me ha funcionado bien, no se si esto influye en algo al TTFB pero bueno, todo lo que sea descargar un poco al servidor supongo que será bueno. Todo un éxito este manual para Siteground.

Un saludo, muchas gracias.

vicente
Invitado
vicente

Hola!
Muchas gracias por esta información, muy valiosa. Quiero hacer una pregunta sobre este tema.

1) Si tienes varios sitios deberías agregar un trabajo por cada sitio como explicas, pero el inicio de los trabajos debería ser en distintos horarios para todos los sitios para que no se ejecuten todos los trabajos al mismo tiempo. Cierto? Cómo se hace eso?

También se podría agregar que si tienes un sitio con pocas visitas no es necesario crear un trabajo cron.

Muchas gracias por compartir tu conocimiento!

Tomás
Invitado
Tomás

Me ha sorprendido este peazo artículo y lo voy a poner en práctica en una web que tengo con muchas visitas donde tengo problemas de consumo.

No tenía ni idea que una de las razones podría darse por el tema del cron y ya he probado muchas cosas para intentar poner solución a esos momentos puntuales donde al tener muchas peticiones simultaneas la web va tan lenta o llega a caer, nunca hubiese pensado en el cron como un posible causante, así que lo probaré.

Muchas gracias por esta información tan valiosa, ahora mismo paso a probar si lo configuro correctamente.

Saludos

Juan Andrés Jiménez
Invitado
Juan Andrés Jiménez

MAGNÍFICO!
Raul, como siempre, dándonos lecciones de WordPress útiles y sencillas.
Un abrazo, amigo.
PD. Échale un vistazo a este post que seguro que te es util:
http://blog.jajimenez.info/2016/06/backups-mysql-wordpress-cronjobs/