• Il sistema cron di WordPress

    WordPress, il noto CMS per realizzare blog e non solo, ha all’interno un sistema di cron che può essere utilizzato per eseguire operazioni pianificate. Vediamo come usarlo.

    Precisiamo innanzitutto che il sistema di cron viene attivato solo se il sito viene visitato, se il sito non ha visite le operazioni pianificate non vengono quindi eseguite.

    Scriviamo insieme un semplice plugin che esegue delle operazioni una volta al giorno.

    Di seguito il file del nostro plugin:

    /* 
       Plugin Name: Cron test plugin
       Description: A cron test plugin example
       Version: 1.0 Author: Fabio Marcone
       Author URI: http://www.fabiomarcone.it
       Text Domain: fm-crontest
    */
    
    register_activation_hook(__FILE__,'fm_cron_activation');
    
    function fm_cron_activation() {
        if (!wp_next_scheduled('fm_cron_hook')){
           wp_schedule_event(time(), 'daily', 'fm_cron_hook');
        }
    }
    
    add_action('fm_cron_hook', 'fm_cron_method');
    
    function fm_cron_method() {
        error_log("fm_cron_method start");
        // aggiungere le istruzioni che il job deve eseguire
        error_log("fm_cron_method end");
    }
    
    register_deactivation_hook(__FILE__, 'fm_cron_deactivation');
    
    function fm_cron_deactivation() {
        wp_clear_scheduled_hook('fm_cron_hook');
    }
    

    Dove:

    • fm_cron_activation, è il metodo chiamato quando viene attivato il plugin (nel caso di esempio registra l’esecuzione del job ogni giorno);
    • fm_cron_deactivation, è il metodo chiamato quando viene disattivato il plugin (nel caso di esempio deregistra l’esecuzione del job);
    • fm_cron_method, è il metodo he viene eseguito a tempo, nell’esempio non contiene logica ma solo la scrittura di 2 messaggi di log.

    L’esempio non è esaustivo ma vuole mostrare una funzionalità di WordPress non a tutti nota. Spero vi possa essere di esempio per creare i vostri plugin che utilizzano il sistema di cron in WordPress.

    Post Tagged with , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *