Skip to content

Instantly share code, notes, and snippets.

@thierrypigot
Last active June 19, 2026 09:30
Show Gist options
  • Select an option

  • Save thierrypigot/aad38c89ad94999bc2379ce318bb1b56 to your computer and use it in GitHub Desktop.

Select an option

Save thierrypigot/aad38c89ad94999bc2379ce318bb1b56 to your computer and use it in GitHub Desktop.
Fichier "mu-plugins". Maintient les tables Action Scheduler à une taille raisonnable : purge automatique des actions terminées, annulées et échouées au-delà de 7 jours, avec un lot de nettoyage élargi.
<?php
/**
* Plugin Name: Purge Action Scheduler
* Description: Maintient les tables Action Scheduler à une taille raisonnable : purge automatique des actions terminées, annulées et échouées au-delà de 7 jours, avec un lot de nettoyage élargi.
* Plugin URI: https://www.wearewp.pro
* Version: 1.0.0
* Author: WeAre[WP]
* Author URI: https://www.wearewp.pro
* License: GPL-2.0-or-later
*
* @package WeAreWP\PurgeActionScheduler
*/
defined( 'ABSPATH' ) || exit;
/**
* Ajoute le statut "failed" aux actions purgées par le nettoyeur natif.
*
* Par défaut, Action Scheduler ne purge que les actions "complete" et
* "canceled". Les actions en échec ("failed") ne sont jamais supprimées et
* s'accumulent indéfiniment dans drnln__actionscheduler_actions, ce qui fait
* gonfler la table sans limite. Ce filtre les réintègre dans le cycle de
* nettoyage automatique.
*
* @see ActionScheduler_QueueCleaner
*
* @param string[] $statuses Liste des statuts éligibles au nettoyage.
* @return string[] Liste complétée avec le statut "failed".
*/
add_filter( 'action_scheduler_default_cleaner_statuses', function ( $statuses ) {
$statuses[] = 'failed';
return $statuses;
} );
/**
* Augmente la taille du lot traité à chaque passage du nettoyeur.
*
* La valeur par défaut est de 20 actions par exécution, ce qui est trop lent
* pour résorber un volume important ou suivre le rythme de plugins générant
* beaucoup d'actions récurrentes (WooCommerce, YITH Bookings, WPForms...).
* On la porte à 100 pour accélérer le maintien sans surcharger la base.
*
* @see ActionScheduler_QueueCleaner
*
* @return int Nombre d'actions purgées par passage.
*/
add_filter( 'action_scheduler_cleanup_batch_size', function () {
return 100;
} );
/**
* Réduit la durée de rétention des actions terminées.
*
* Détermine l'ancienneté minimale, en secondes, à partir de laquelle une
* action terminée devient éligible au nettoyage. La valeur native est de
* 30 jours ; on la ramène à 7 jours pour conserver un historique utile au
* débogage tout en limitant la croissance des tables. Les actions "pending"
* et "in-progress" ne sont jamais concernées par ce délai.
*
* @see ActionScheduler_QueueCleaner
*
* @return int Durée de rétention en secondes (WEEK_IN_SECONDS = 604800).
*/
add_filter( 'action_scheduler_retention_period', function () {
return WEEK_IN_SECONDS;
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment