Desactivar wp-cron.php para ahorrar recursos. WordPress usa el archivo wp-cron.php para realizar tareas programadas, por tanto revisa y ejecuta publicaciones programadas, verifica actualizaciones de plugins, temas, etc…, el envío de mails, contadores, etc… .
Por defecto, WordPress está pre-configurado para disparar wp-cron.php cada vez que alguien visita tu sitio web.
En paginas web de poco tráfico, esta bien, pero si recibes miles de visitas diarias puede llegar a ser un autentico quebradero de cabeza. Los recursos se disparan, la velocidad de la web disminuye, posibles bloqueos o errores 500, en fin… un desastre.
Por todo esto, si tu sitio sobrepasa las 350 o 400 visitas diarias te recomendaría desactivar wp-cron.php y ejecutarlo en un tiempo definido, ya sea con una tarea cron directamente y si tienes varios sitios Worpress en un VPS o Servidor, mejor con un script sh.
Vemos como hacer lo propuesto.
Desactivar wp-cron.php
Para desactivar el cron, debemos editar el archivo «wp-cron.php» y añadir:
/** Desactivar wp-cron.php */ define('DISABLE_WP_CRON', true);
ejemplo…
/** MySQL hostname */ define('DB_HOST', 'localhost'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8mb4'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', ''); /** Desactivar wp-cron.php */ define('DISABLE_WP_CRON', true); /** Desactivar actualizaciones automaticas. */ define( 'AUTOMATIC_UPDATER_DISABLED', true );
Guardamos el archivo en su localización original, continuamos.
Ejecutar wp-cron con tiempo definido
Si usas un panel de control web (Plesk, Cpanel, VestaCP, etc…), tan solo tienes que activarlo en la sección «tareas cron», pones el tiempo en 10 o 15 minutos, y el ejecutable es:
cd /home/usuario/public_html; php -q wp-cron.php
Si te da algún error, prueba de esta otra forma.
php -q /home/usuario/public_html/wp-cron.php
También puedes agregar la tarea cron directamente desde consola / terminal.
crontab -e 15 * * * * /path/to/php /path/to/ruta-o-sitio/wp-cron.php
Todos los casos anteriores son para ejecutar wp-cron en un sitio o instalación de WordPress, ahora creamos un script para que ejecute los wp-cron de todas las instalaciones o sitios web de tu VPS o Servidor.
Creamos un archivo «sh» llamado «wpcron.sh«, y agregamos lo siguiente:
for i in `find . -iname "wp-cron.php"` do echo "$i" php -q $i done
lo guardamos en la ruta de los sitios web, por ejemplo, en Centos es:
/home/user
y creamos una tarea cron.
*/15 * * * * /home/user/webs/wpcron.sh
Ya lo tenemos listo, nuestro wp-cron se ejecutara cada 15 minutos y nuestro sistema queda liberado de recursos.