Développement et croissance du site web

Comment utiliser WP Cron et Action Scheduler dans WordPress : Guide complet

  • Actus

Rédigé par Hugo

31 Mar. 2025


WordPress Automation

La gestion des tâches programmées est essentielle pour le bon fonctionnement d’un site WordPress, notamment pour exécuter des mises à jour, des actions récurrentes ou encore automatiser certaines tâches. Dans WordPress, deux outils permettent de gérer ces actions programmées : WP Cron et Action Scheduler.

Dans cet article, nous allons voir en détail :

  • Ce qu’est WP Cron et comment l’utiliser pour programmer des tâches automatiques.
  • Comment Action Scheduler, utilisé notamment par WooCommerce, permet d’améliorer la gestion des tâches en arrière-plan.
  • Comment créer, programmer et supprimer des tâches avec ces deux systèmes.

WP Cron : Le gestionnaire de tâches intégré de WordPress

Qu’est-ce que WP Cron ?

WP Cron est le système de planification des tâches utilisé par WordPress pour exécuter des actions à intervalles réguliers. Contrairement aux cron jobs classiques sur les serveurs, WP Cron ne fonctionne pas selon un calendrier fixe, mais se déclenche à chaque chargement de page. Cela signifie que si votre site n’a pas de trafic régulier, certaines tâches peuvent être retardées.

Pourquoi utiliser WP Cron ?

  • Planifier des mises à jour automatiques (WordPress, plugins, thèmes).
  • Exécuter des tâches en arrière-plan, comme l’envoi d’e-mails, la synchronisation de contenu, ou la mise en cache.
  • Automatiser la publication différée d’articles.
  • Gérer des actions répétitives sur votre site WordPress.

Créer une tâche programmée avec WP Cron

Pour programmer une tâche avec WP Cron, nous utilisons la fonction wp_schedule_single_event().

Exemple : Supposons que nous voulons marquer automatiquement une commande WooCommerce comme complétée après deux jours :

add_action( 'woocommerce_thankyou', 'auto_complete_orders_after_two_days' );

function auto_complete_orders_after_two_days( $order_id ) {

    wp_schedule_single_event( 

        time() + 2 * DAY_IN_SECONDS, // Exécution dans 2 jours

        'auto_complete_order',

        array( $order_id )

    );

}

add_action( 'auto_complete_order', 'auto_complete_order_function' );

function auto_complete_order_function( $order_id ) {

    $order = wc_get_order( $order_id );

    if ( $order && $order->get_status() === 'processing' ) {

        $order->update_status( 'completed' );

    }

}

Explications :

  • wp_schedule_single_event() permet d’exécuter l’action auto_complete_order après 2 jours.
  • add_action( 'auto_complete_order', 'auto_complete_order_function' ) associe cette action à la fonction qui modifie le statut de la commande.
  • time() + 2 * DAY_IN_SECONDS programme l’exécution dans 2 jours.

Créer une tâche récurrente avec WP Cron

Si vous souhaitez exécuter une action de manière régulière (ex. tous les jours), utilisez wp_schedule_event() :

if (! wp_next_scheduled('auto_complete_all_orders') ) {

    wp_schedule_event(

        time() + DAY_IN_SECONDS * 2, // Démarrage dans 2 jours

        'every2days', // Intervalle personnalisé

        'auto_complete_all_orders'

    );

}

add_action( 'auto_complete_all_orders', 'process_auto_complete_orders' );

function process_auto_complete_orders() {

    $orders = wc_get_orders(array(

        'status' => array('wc-processing'),

        'date_created' => '>' . ( time() - 2 * DAY_IN_SECONDS ),

        'return' => 'ids',

    ));

    foreach ($orders as $order_id) {

        $order = wc_get_order($order_id);

        $order->update_status('completed');

    }

}

Ici, nous avons défini un intervalle personnalisé pour exécuter la tâche tous les 2 jours.

Créer un intervalle personnalisé dans WP Cron

Par défaut, WordPress propose des intervalles comme hourly, daily, weekly, etc. Si vous avez besoin d’une autre fréquence (ex. toutes les 2 heures), il faut la déclarer via cron_schedules :

add_filter( 'cron_schedules', function( $schedules ) {

    $schedules['every2days'] = array(

        'interval' => 2 * DAY_IN_SECONDS,

        'display'  => 'Toutes les 2 jours'

    );

    return $schedules;

});

Gérer les tâches programmées dans WordPress

Pour voir et gérer les tâches WP Cron en cours, vous pouvez utiliser le plugin Advanced Cron Manager.

  • Installation : Recherchez « Advanced Cron Manager » dans le répertoire des plugins et activez-le.
  • Gestion : Vous verrez toutes les tâches programmées dans l’interface WordPress.

Action Scheduler : Une alternative plus puissante pour WooCommerce

Si vous utilisez WooCommerce, WP Cron peut être limité. C’est là qu’intervient Action Scheduler, un outil développé par WooCommerce pour gérer des tâches à plus grande échelle.

Pourquoi utiliser Action Scheduler ?

  • Meilleure gestion des files d’attente : Exécution fiable même en cas de faible trafic.
  • Plus efficace pour WooCommerce : Compatible avec les commandes, stocks, abonnements.
  • Exécution en arrière-plan avec action_scheduler_run_queue.

Programmer une tâche avec Action Scheduler

Comme WP Cron, Action Scheduler permet d’exécuter des tâches automatiques.

Exemple : Exécution unique après 2 jours :

as_schedule_single_action(

    time() + 2 * DAY_IN_SECONDS,

    'auto_complete_order',

    array( $order_id ),

    'order-group',

    true

);

Exemple : Tâche récurrente :

as_schedule_recurring_action(

    time() + 2 * DAY_IN_SECONDS,

    2 * DAY_IN_SECONDS,

    'auto_complete_all_orders',

    array(),

    'order-group',

    true

);

Supprimer une tâche programmée

Avec WP Cron

Si vous souhaitez annuler une tâche, utilisez wp_unschedule_event() :

wp_unschedule_event(

    wp_next_scheduled('auto_complete_order'),

    'auto_complete_order',

    array($order_id)

);

Ou pour supprimer toutes les occurrences :

wp_clear_scheduled_hook('auto_complete_order', array($order_id));

Avec Action Scheduler

Pour annuler une action planifiée :

as_unschedule_action('auto_complete_order', array($order_id), 'order-group');

Pour supprimer toutes les occurrences :

as_unschedule_all_actions('auto_complete_all_orders', array(), 'order-group');

Gérer les tâches d’Action Scheduler dans WooCommerce

WooCommerce intègre une interface pour gérer les tâches planifiées :

  1. Accédez à WooCommerce > Status > Scheduled Actions.
  2. Vous pouvez y voir toutes les actions programmées et en exécuter ou supprimer.

WP Cron vs Action Scheduler : Quelle solution choisir ?

FonctionnalitéWP CronAction Scheduler
Mode de déclenchementDépend du traficExécute via un cron serveur
FiabilitéMoins fiable si peu de visiteursTrès fiable
Gestion WooCommerceLimitéeOptimisé pour WooCommerce
Exécution en arrière-planNonOui

Si vous gérez un site WooCommerce avec des commandes fréquentes, Action Scheduler est fortement recommandé. Pour des tâches basiques comme des mises à jour ou des publications planifiées, WP Cron suffira.

Conclusion

Que vous utilisiez WP Cron ou Action Scheduler, il est essentiel de bien planifier vos tâches automatiques pour optimiser votre site WordPress. WP Cron est simple mais limité, tandis qu’Action Scheduler offre plus de flexibilité pour les sites WooCommerce.

En comprenant comment utiliser ces outils, vous pourrez automatiser des tâches essentielles et améliorer les performances de votre site WordPress.Si vous souhaitez approfondir le sujet, pensez à tester des plugins comme Advanced Cron Manager ou explorer la documentation officielle de WooCommerce Action Scheduler. Pour en savoir plus, adressez-vous à une agence experte WordPress !

Besoin d’aide pour créer un site performant ?

Réservez votre audit stratégique offert pour propulser la croissance de votre entreprise grâce à votre site web !

D'autres articles pouvant vous plaire !

Développement et croissance du site web

Boostez l’engagement avec Notification Master : des notifications ciblées à portée de clic

23 Déc. 2024
Client Heureux et Fidèles

Utiliser les retours clients pour améliorer votre boutique WooCommerce

29 Nov. 2024
Multichoix pour site web

Les plugins de liens internes pour WordPress : Boostez votre SEO sans (trop) de sueur !

04 Nov. 2024