Action Scheduler WordPress : Quand les crons passent à la vitesse supérieure

En résumé : Action Scheduler WordPress est une bibliothèque développée par Automattic qui remplace les crons WordPress natifs par un système de file d’attente robuste et fiable. Contrairement aux crons classiques qui dépendent du trafic du site, Action Scheduler utilise une vraie file d’attente asynchrone avec historique complet, logs détaillés et traçabilité de chaque tâche planifiée.

Les crons WordPress classiques ? Franchement, dès que ton projet prend de l’ampleur, ils montrent vite leurs limites. Heureusement, Automattic ont sorti une solution carrément plus costaud : Action Scheduler WordPress. Je te montre comment l’intégrer dans tes projets, même si t’as pas WooCommerce installé.

Table des matières

Pourquoi les crons WordPress natifs montrent leurs limites

Les crons WordPress natifs (WP-Cron) ont trois gros défauts qui impactent la performance de votre site :

  1. Dépendance au trafic : pas de visite sur le site = pas d’exécution des tâches
  2. Zéro historique : impossible de savoir ce qui s’est réellement passé
  3. Gestion approximative : pas de file d’attente, pas de retry automatique en cas d’échec

Action Scheduler WordPress vient régler tous ces problèmes avec :

  • Un timing précis et fiable indépendant du trafic
  • Des logs / historique directement dans l’admin WordPress
  • Du traitement asynchrone qui tient la route
  • Une file d’attente intelligente avec priorités
  • Une gestion d’erreurs professionnelle
  • Des hooks de monitoring avancés

Cette bibliothèque est utilisée par des millions de sites WooCommerce, ce qui garantit sa fiabilité et sa maintenance à long terme.

Installation Action Scheduler WordPress : deux méthodes au choix

Méthode 1 : Le plugin standalone

Tu télécharges le plugin depuis le dépôt GitHub officiel Action Scheduler et tu l’installes comme n’importe quel plugin WordPress. Simple et efficace pour tester rapidement.

Méthode 2 : Via Composer

Pour créer un plugin custom, intègre directement la bibliothèque via Composer :

composer require woocommerce/action-scheduler

Cette approche intègre Action Scheduler WordPress directement dans ton plugin perso.

Configuration préalable obligatoire pour Action Scheduler WordPress

Peu importe la méthode d’installation choisie, tu dois désactiver les crons WordPress natifs dans ton fichier wp-config.php :

define( 'DISABLE_WP_CRON', true );

Cette ligne désactive le système WP-Cron pour éviter les conflits avec Action Scheduler WordPress.

Configurer une vraie tâche cron serveur

Ensuite, configure une tâche cron système pour déclencher l’exécution régulièrement. Deux options s’offrent à toi :

Option 1 : Via cURL (méthode universelle)

* * * * * curl -s https://votre-site.com/wp-cron.php?doing_wp_cron > /dev/null 2&1

Option 2 : Via WP-CLI (si disponible sur ton hébergement)

* * * * * cd /chemin/vers/wordpress && wp cron event run --due-now > /dev/null 2&1

Ces exemples lancent une vérification toutes les minutes. Adapte la fréquence selon tes besoins réels pour optimiser les ressources serveur. Pour en savoir plus sur WP-CLI, consulte la documentation officielle WP-CLI.

Créer votre première action planifiée avec Action Scheduler WordPress

La syntaxe d’Action Scheduler WordPress est franchement simple et intuitive 🧙 :

add_action( 'init', 'tas_schedule_test' );
function tas_schedule_test() {
    if ( isset( $_GET['test_retry'] ) && current_user_can( 'manage_options' ) ) {
        $action_id = as_schedule_single_action( time(), 'test_action', ['test'] );

        error_log( "Action planifiée avec ID: {$action_id}" );

        wp_die( "Action planifiée (ID: {$action_id}). Attends 2 secondes puis va sur wp-cron.php?doing_wp_cron. Regarde debug.log" );
    }
}

Cette fonction crée une action qui s’exécute immédiatement (time()), appelle le hook test_action, et lui passe le tableau ['test'] en paramètre.

Définir le comportement de votre action

Maintenant, définissons ce que fait concrètement ton action Action Scheduler WordPress :

add_action( 'test_action', 'tas_test_action' );
function tas_test_action( $data ) {
    error_log( 'init' );

    // throw new Exception( 'Échec volontaire' ); // Pour tester les erreurs
    error_log( 'SUCCÈS !' );
}

Une fois ton action créée, direction /wp-admin/tools.php?page=action-scheduler pour visualiser tes tâches dans l’interface d’administration : en attente, en cours d’exécution, terminées ou échouées.

Interface admin Action Scheduler WordPress montrant la liste des tâches avec leurs statuts différents

Migrer depuis les crons WordPress natifs

Tu utilises déjà les crons WordPress ? La migration est ultra simple : seul l’appel de planification change. Le reste de ton code ? Aucune modif nécessaire.

Remplace simplement :

  • wp_schedule_event() par as_schedule_recurring_action()
  • wp_schedule_single_event() par as_schedule_single_action()

Tes callbacks existants fonctionnent sans modification.

Surveiller l’exécution avec les hooks

Action Scheduler WordPress te file des hooks puissants pour tracer précisément ce qui se passe dans ta file d’attente 🐾 :

/*
 * Logger TOUS les événements Action Scheduler WordPress
 */
add_action( 'action_scheduler_failed_execution', 'tas_log_failed', 10, 2 );
function tas_log_failed( $action_id, $exception ) {
    error_log( sprintf(
        '[AS] action_scheduler_failed_execution - ID: %d - Exception: %s',
        $action_id,
        $exception->getMessage()
    ) );
}

add_action( 'action_scheduler_before_process_queue', 'tas_log_before_queue' );
function tas_log_before_queue() {
    error_log( '[AS] Le runner démarre...' );
}

add_action( 'action_scheduler_after_process_queue', 'tas_log_after_queue' );
function tas_log_after_queue() {
    error_log( '[AS] Le runner a terminé' );
}

Ces logs te permettent de déboguer efficacement et de repérer les problèmes rapidement.

Créer un système de retry automatique avec Action Scheduler WordPress

Petit bémol : Action Scheduler WordPress n’a pas de système de retry natif intégré (ou je ne l’ai pas trouvé 🤓 ). Voici ma solution pour combler ce manque :

Récupérer les actions échouées

$failed_actions = as_get_scheduled_actions( [
    'status'   => ActionScheduler_Store::STATUS_FAILED,
    'per_page' => 20,
    'order'    => 'DESC'
] );

On récupère les 20 dernières actions échouées (un nombre raisonnable pour éviter de surcharger le système). On pense toujours volumétrie !!!

Replanifier intelligemment les tâches

$count   = 0;
$results = [];

foreach ( $failed_actions as $action_id => $action ) {
    $old_id = $action_id;
    $hook   = $action->get_hook();
    $args   = $action->get_args();

    // Planification d'une nouvelle action
    $new_id = as_schedule_single_action( time(), $hook, $args );

    // Suppression de l'ancienne action
    ActionScheduler::store()->delete_action( $old_id );

    $results[] = "✅ {$hook} (ID: {$old_id} → {$new_id})";
    $count++;

    error_log( "Action {$old_id} relancée → Nouveau ID: {$new_id}" );
}

Point d’attention crucial : pense bien à supprimer les anciennes actions pour éviter de replanifier indéfiniment les mêmes erreurs dans Action Scheduler WordPress.

Tu peux exposer ce système via un endpoint de l’API REST WordPress ou une URL sécurisée avec token d’authentification. Pour passer en production, envisage de décaler progressivement les replanifications plutôt que de tout relancer d’un coup (même si l’outil va de lui même mettre en fil d’attente et traiter comme il peut).

FAQ

Action Scheduler est une bibliothèque développée par Automattic qui remplace le système WP-Cron natif par une file d'attente robuste avec logs, historique complet et gestion avancée des erreurs. Elle est utilisée nativement par WooCommerce mais fonctionne parfaitement de manière standalone.

Les crons WordPress natifs dépendent du trafic du site et n'offrent aucun historique ni système de retry. Action Scheduler garantit une exécution fiable même sans visiteurs, avec logs détaillés et gestion automatique des échecs pour améliorer la fiabilité de vos tâches planifiées.

Oui, absolument. Bien que développé par l'équipe WooCommerce, Action Scheduler est une bibliothèque standalone qui fonctionne parfaitement sur n'importe quel site WordPress, avec ou sans WooCommerce installé.

Conclusion : un vrai boost pro pour vos tâches planifiées WordPress

Action Scheduler WordPress transforme la gestion des tâches planifiées en un système vraiment professionnel et fiable. Développé et maintenu par Automattic, tu peux lui faire confiance : c’est du solide, testé et éprouvé sur des millions de sites WooCommerce dans le monde entier.

Tu restes dans l’écosystème WordPress tout en bénéficiant d’outils de qualité professionnelle : historique complet avec logs détaillés, gestion d’erreurs robuste, file d’attente asynchrone performante et interface d’administration intuitive. Un investissement minimal en temps de configuration pour un gain de robustesse et de fiabilité considérable.

Que tu développes un plugin custom, un thème avancé ou que tu gères simplement un site WordPress complexe, Action Scheduler WordPress mérite sa place dans ta boîte à outils de développeur. La migration depuis les crons natifs est simple et les bénéfices immédiats.

Prêt à passer vos tâches planifiées à la vitesse supérieure ? Consultez la documentation complète Action Scheduler sur GitHub et commencez dès aujourd’hui à profiter d’un système de crons digne de ce nom.

Samy Kantari - Expert WordPress + IA

Kantari Samy

Expert WordPress + IA

👨‍💻 10 ans dans le game WordPress, chez Whodunit, à bricoler du code, à dompter des bugs et à faire tourner des projets de toutes tailles.
Puis l’IA est arrivée… et là, révélation 💡 !
J’ai switché de mindset, réinventé ma façon de coder et avec le vibe coding : une nouvelle ère où je ne suis plus limité par le temps ni par les outils.

Aujourd’hui ? Je code toujours… Mais avec mon copilote IA.
On forme une team de choc. Lui, c’est la puissance. Moi, c’est la vision. Ensemble, on déverrouille ce qui semblait impossible hier. 🚀

10+ Années d'expérience
+++ Projets réalisés
80% code par IA
S’abonner
Notification pour
guest
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires