Com programar tasques Cron amb WordPress

Com programar tasques Cron amb WordPress

Cron és un servei molt comú als sistemes Linux i similars que generalment s’usa per a programar comandes o scripts al servidor perquè s’executin en segon pla.

En aquest post et mostrem, pas a pas, com programar tasques recurrents amb WordPress.

Table of Contents

Introducció

A WordPress tenim el nostre propi cron anomenat WP-Cron

WP-Cron simula un cron de sistema i permet que WordPress dispari les seves pròpies tasques.

Els serveis “cron” permeten programar tasques en dates, hores o intervals fixos periòdics. En general, això implica tasques de manteniment repetitives que estan automatitzades per a estalviar temps.

Però com funciona el servei de cron de WordPress?

El servei cron de WordPress

El servei cron de WordPress WP-Cron, per defecte es dispara cada vegada que un usuari visita una pàgina web.

Quan algú visita una pàgina, WP-Cron comprova si existeix alguna tasca pendent d’execució. Si troba una tasca pendent, WP-Cron l’executarà en aquest mateix instant.

Ciclo de ejecución de tareas Cron Job en WordPress
En visitar una pàgina WP Cron fa tasques incrementant el Temps de Càrrega.

Per a millorar el rendiment de la teva pàgina web WordPress, una bona opció és desactivar el sistema intern WP-Cron i delegar aquesta tasca a un servei cron extern.

T’expliquem com deshabilitar el cron intern de WordPress en aquesta publicació. Si vols treballar amb un servidor especialitzat WordPress amb wp-cron ja funcionant des de fora amb cron extern, demana la teva migració GRATUÏTA o simplement prova en els servidors de desenvolupament gratuït de wetopi.

Com executar una tasca Cron amb WordPress

Si vols afegir una tasca a WP-Cron de WordPress, necessitaràs primer crear el “hook” o ganxo encarregat de dur a terme la tasca. Després a la tasca li has d’associar un esdeveniment i aquest esdeveniment enganxar-lo a una de les recurrències que WP-Cron va cridant de manera periòdica.

Si ets un usuari avançat i no vols delegar aquesta tasca a un plugin, et recomanem scheduling WP Cron events de la guia oficial WordPress Plugin Handbook.

Per als no tan avançats, a continuació descrivim el procés ajudant-nos de WP Crontrol plugin, un dels plugin cron Gratuïts més àmpliament utilitzats. 

Plugin WP Control per a gestionar tasques cron en WordPress
WP Crontrol té més de 100,000 instal·lacions actives amb una impressionant qualificació de 4.9 sobre 5.

Amb l’extensió WP Crontrol pots veure i controlar les tasques que executa WP-Cron

Des del panell d’administració de WordPress, Wp Control et permet: veure tots els esdeveniments, afegir esdeveniments nous, editar esdeveniments existents, afegir o modificar períodes d’execució, etc …


Afegir Programacions “Schedules” amb l’ajuda de WP-Crontrol

Després d’instal·lar i activar el plugin WP Crontrol, dins de la secció del menú “Ajustos” trobaràs la nova opció “Programacions cron”:

La edición de periodos cron para WordPress está en el Menú Ajustes
Programacions cron o “Cron Schedules”

En “Programacions cron” el que pots fer és afegir nous rangs o períodes d’execució.

Formulario Cron Schedule para añadir intervalos de programación de eventos cron para WordPress
Formulari Cron Schedule per a afegir intervals d’execució.

Per exemple afegir un interval de 600 segons per a poder així disparar l’execució d’esdeveniments cada 10 minuts.

Afegir un Esdeveniment per a executar una tasca

Per a afegir un Esdeveniment, fes clic sobre l’opció de menú Esdeveniments cron “Cron Events” dins de la secció d’Eines:

Item Events Cron de WordPress amb Wp-Control

Molts dels noms d’acció dels esdeveniments són f doncs la part del nom de la tasca coincideix molts cops amb la de l’esdeveniment, com per exemple “wp_update_plugins” o “wp_update_themes”.

Com a exemple a continuació crearem una simple acció “enviar un mail” per a després afegir l’esdeveniment al Cron de WordPress.

Com es tracta d’una nova acció, has d’afegir el codi de l’acció a executar en l’arxiu functions.php:

add_action( 'send_mail', 'send_mail_func' );

function send_mail_func() {
    wp_mail( 'hello@world.com', 'Això és un email automatitzat', 'Hola Món' );
}

Després des del panell d’administració obres l’apartat “Esdeveniments cron” i emplenes el formulari de la pestanya “Afegir Esdeveniment Cron”

Formulari Esdeveniments WP-Cron per a afegir tasca a cron WordPress
Llistat i Formulari d’events del plugin WP-Control

On posa Nom del ganxo o “Hook Name“, has de posar el mateix nom de la funció que realitza l’acció: “send_mail”. I al camp Pròxima execució o “Next Run” el moment en què que volem començar a executar l’esdeveniment, en el nostre cas Ara i a Recurrència, el període amb el qual vols repetir l’esdeveniment. Pel nostre cas “Hello World” és la nova recurrència creada amb en el pas anterior:

Listado de eventos Cron para WordPress con plugin WP Control
El nou esdeveniment hook send_email Event llest una vegada programat.

És interessant programar la “Pròxima execució” amb valor “Ara”, això t’ajudarà a testar l’Acció per a veure si s’executa sense donar errors.

Com es veu en el llistat, WP-Control et permet modificar també les tasques ja programades, des de l’enllaç Editar del llistat d’esdeveniments.

T’aconsellem també el post relacionat, Com desactivar el cron de WordPress per a millorar la velocitat de càrrega del teu web WordPress.

Resumidament, som uns techies apassionats per WordPress que hem creat Wetopi, un Allotjament WordPress Gestionat, per minimitzar la fricció a la que tot professional s’enfronta en treballar i allotjar projectes WordPress.

No tens un compte a wetopi?

Inclou servidors de desenvolupament Gratis.
No cal tarjeta de crèdit.