Primero es importante entender la función que wp-cron.php
tiene en WordPress, siendo este el encargado de ejecutar todas las tareas que tenemos calendarizadas en el tiempo, por ejemplo la ejecución de respaldos a cierta hora y día, la publicación de algunos posts programados, etc.
Normalmente WordPress ejecuta esta función cada vez que una página es visitada y con esto podemos deducir un par de escenarios:
- En sitios de bajo tráfico probablemente habrá tareas que no sean ejecutadas en tiempo y hora deseada, debido a que al no recibir una visita wp-cron no se ejecutará y por consiguiente las tareas que tengamos calendarizadas no serán ejecutadas en tiempo.
- En sitios de alto tráfico generará una carga extra al servidor debido a la excesiva ejecución de esta función.
Por lo anterior es recomendable establecer una manera predecible y constante de ejecutar esta función con el fin de garantizar una ejecución constante de las tareas programadas en WordPress.
Desactivar wp-cron.php
Desactivaremos esta función para evitar la ejecución automática durante cada visita en nuestro sitio. Insertamos la siguiente linea en el archivo wp-config.php
localizado en la raíz de nuestra instalación:
define('DISABLE_WP_CRON', true);
Configurar Linux Cron Job
Ahora configuraremos un Cronjob en el servidor para ejecutar wp-cron de manera periódica.
Desde la terminal abrimos crontab:
crontab –e
Y a continuación configuramos la ejecución de wp-cron.php
, agregando la siguiente línea al final:
*/5 * * * * curl http://mydomain.com/wp-cron.php > /dev/null 2>&1
Otra alternativa usando wget
:
*/5 * * * * wget -q -t 1 -O – http://mydomain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
En el ejemplo anterior se está programando la ejecución de wp-cron.php
de manera constante cada 5 minutos; podemos modificar este parámetro para cambiar el periodo, por ejemplo */15 para ejecutarlo cada 15 minutos.
De esta manera, al usar el Crontab de Ubuntu se ejecutara el wp-cron por un proceso independiente en PHP por lo que no afectara el desempeño de nuestro sitio web.
Wp-Cron.php en WordPress Multisite
Es importante considerar que en instalaciones “Multisite” de WordPress cada sub-sitio ejecuta de manera individual su propio wp-cron.