Turoriels

Comment créer un CRON avec WordPress

Suite à de nombreuses demandes, nous allons voir comment créer un CRON avec WordPress.

Rappelons-le, le CRON est un système qui génère automatiquement une tache depuis un fichier toutes les X secondes qui peut être défini en secondes, heures, jours, semaines etc …

 

A quel endroit l’intégrer ?

  • Depuis un thème directement dans le fichier « fonction.php »
  • Sur un plugin à intégrer en brut.

Dans cet exemple, nous allons exécuter un simple envoi de mail toutes les 30 secondes.

On créé une fonction mail qui sera envoyée toutes les 30 secondes

function envoi_mail() {
$destinataire = get_option( 'admin_email' );
$sujet = "Test CRON";
$from = "From:" . get_option( 'admin_email' ) . "n";
$from .= "MIME-version: 1.0n";
$from .= "Reply-To: " . get_option( 'admin_email' ) . "n";
$from .= "Return-Path: <" . get_option( 'admin_email' ) . ">n";
$from .= "X-Mailer: Test CRON de mon siten";
$from .= "Content-type: text/html; charset= utf-8n";
mail($destinataire,$sujet,"test CRON réussi :)",$from);
}

On enregistre le CRON et on l’exécute

register_activation_hook(__FILE__, 'cron_envoi_mail');
add_action('cron_schedules', 'cron_envoi_mail');

On créé le chronomètre et on le paramètre à 30 secondes

function cron_envoi_mail($schedules) {
$schedules['temps_personnalise'] = array('interval'=>30, 'display'=>'Temps_personnalise_a_30s');
return $schedules;
}
if (!wp_next_scheduled('chronometre')) {
wp_schedule_event(time(), 'temps_personnalise', 'chronometre');
}
add_action('chronometre', 'envoi_mail');

On désactive le CRON

register_deactivation_hook(__FILE__, 'cron_envoi_mail_stop');
function cron_envoi_mail_stop() {
wp_clear_scheduled_hook('chronometre');
}

 

NOTE : La désactivation du CRON se fait automatiquement lorsque l’on désactive un plugin qui contient ce CRON. Si le CRON est appelé dans le fichier « fonctions.php » de votre thème, il faudra tout simplement lancer la commande cron_envoi_mail_stop(); pour arrêter la fonction.

Ces fonctions sont a appliquer comme bon vous semble. Dans cet exemple, nous avons juste fait un test sur l’envoi d’un simple mail, mais vous pouvez y ajouter les fonctions que vous souhaitez et aussi paramétrer le temps (30 secondes ou plus).

Si vous avez des questions, n’hésitez pas à en parler.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *