WP-Cron: Todo lo que debes saber para que funcione

WP-Cron: Todo lo que debes saber para que funcione (Destacada)

¿Tenías artículos programados en WordPress pero no se publicaron cuando debían? ¿O quizá una copia de seguridad? ¿Qué es lo que pasó? La respuesta a todo esto está en en el archivo WP-Cron (wp-cron.php).

En WordPress, wp-cron.php es un pequeño archivo ubicado en la carpeta raíz (aquella en la que se encuentra la instalación del CMS), responsable de ejecutar todos los eventos y tareas programados. Entre estos eventos y tareas se encuentran publicar entradas programadas, verificar las actualizaciones de plugins y themes, enviar notificaciones por correo electrónico,…

WP-Cron: Todo lo que debes saber para que funcione

Limitaciones de WP-Cron

El principal problema que presenta WP-Cron es que este solo se ejecuta cada vez que alguien entra al sitio web, verificando todas las tareas y eventos programados para ver si alguno necesita ejecutarse en ese momento. Pero claro, ¿qué ocurre si nadie entra a la web? Pues que las tareas del archivo wp-cron.php no se ejecutarían nunca.

Por ejemplo, supongamos que hay un mensaje que se tiene que enviar en el día de hoy para recordar que hay un evento mañana. Si hasta mañana por la mañana ningún usuario visita la web, el mensaje no se enviará.

Otro problema existente en las tareas del archivo wp-cron.php es el que se encuentra cuando ocurre todo lo contrario que en el caso anterior, es decir, que verifique que si una tarea se tiene que ejecutar o no con cada visita. Si hay un gran tráfico hacia el sitio web, realizar este tipo de comprobación tan repetidamente, puede aumentar el uso de recursos. Esto no es muy eficiente.

Entonces, ¿cómo se puede solucionar esto? Muy fácil: deshabilitando la ejecución del archivo wp-cron.php desde WordPress y habilitándola desde el servidor web.

¿Cómo deshabilitar la ejecución del archivo wp-cron.php desde WordPress?

Para deshabilitar WP-Cron desde WordPress, se pueden seguir los siguientes pasos:

  1. Abrir el archivo wp-config.php. Si nuestro proveedor de hosting dispone de editor de código, lo podemos hacer desde ahí. En caso contrario, deberemos descargarlo, editarlo y volver a subirlo.
  2. Navegar hasta la parte inferior de la configuración de la base de datos (normalmente alrededor de la línea 37, aunque esto puede variar si tenemos otras funciones añadidas).
    
    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define('DB_NAME', 'wordpress');
    
    /** MySQL database username */
    define('DB_USER', 'root');
    
    /** MySQL database password */
    define('DB_PASSWORD', 'toor');
    
    /** 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', '');
    
  3. Añadir el código
    define('DISABLE_WP_CRON', 'true');
  4. Guardar los cambios.

Este código evitará que se comprueben las tareas del archivo wp-cron.php cada vez que un usuario entra al sitio web.

¿Cómo habilitar la ejecución de WP-Cron desde el servidor?

En este caso, la configuración para ejecutar el archivo wp-cron.php en intervalos de tiempo, dependerá de cada hosting. A continuación, se pueden ver tutoriales de algunos de los mejores para WordPress:

Cómo se puede ver, en casi todos los servidores, la forma de habilitar una tarea cron es muy similar.

Si el hosting está en Linux y se tiene acceso a su consola, se puede habilitar la ejecución del archivo wp-cron.php (o de cualquier otro archivo) mediante comandos. Para ello, se puede consultar el siguiente tutorial.

Para finalizar

Con este artículo, ya se tienen los conocimientos básicos de qué es WP-Cron, como se puede deshabilitar desde WordPress y cómo habilitarlo en un hosting.

Si aún te queda alguna duda, te invito a que me la hagas llegar en los comentarios del artículo o a través del formulario de contacto.