Desactivar la cron de Wordpress para mejorar el rendimiento

wp-cron.php es el sistema que se encarga de realizar automáticamente las tareas periódicas que la aplicación necesite (limpiar, optimizar, enviar emails automatizados, etc), esto es algo habitual y necesario en cualquier aplicación web, no obstante en Wordpress su diseño es un tanto peculiar.

Lo normal en una aplicación web es que la ejecución se realice por medio de una tarea cron configurada a nivel sistema operativo, pero Wordpress quiso simplificarlo, cada acceso a la web implica que se compruebe si es necesario ejecutar alguna tarea y en caso afirmativo es ese mismo acceso de un visitante normal el que ejecuta wp-cron.php.

Este diseño algo absurdo, aunque cumple, implica una sobrecarga innecesaria que repercute en la velocidad de acceso y uso de recursos, este tipo de tareas no deberían ser nunca responsibilidad del visitante, son tareas esenciales que se deben ejecutar de forma independiente y automatizada.

La solución pasa por desactivar el sistema cron usado por defecto y crear una tarea en cPanel que se ejecute de forma periódica, quedando delegada la función a dicha tarea.

Solución automática vía Softaculous

La forma más sencilla de hacer esta corrección es vía Softaculous, accedes a WordPress Manager by Softaculous que aparece en el lateral izquierdo de cPanel, y se mostrarán todas las instalaciones de WordPress, despliega la deseada y click en Desactivado para Cron de WordPress (wp-cron.php).

Esta acción se encargará de todo, desactivando la wp-cron.php y creando la tarea automática.

Solución manual

Para solucionarlo, edita el fichero wp-config.php y desactiva este comportamiento añadiendo:

define("DISABLE_WP_CRON", true);

Tras esto añade una tarea cron desde cPanel para que se ejecute el comando indicado a continuación cada 5 o 10 min:

wget -O /dev/null "https://TUDOMINIO.COM/wp-cron.php?doing_wp_cron"