# Crochet de désactivation

> Point d'entrée exécuté quand une extension WordPress est désactivée, généralement pour nettoyer des tâches planifiées ou libérer des ressources temporaires.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/crochet-desactivation/

Désactiver une extension n'est pas la même chose que la supprimer : l'utilisateur peut vouloir la réactiver plus tard, donc ses réglages doivent rester intacts. Ce qui doit en revanche s'arrêter immédiatement, ce sont les processus actifs qu'elle a mis en place, comme une tâche planifiée qui tournerait pour rien en arrière-plan.

## Utilisation typique

La fonction `register_deactivation_hook()` associe le fichier principal de l'extension à une fonction exécutée au moment de la désactivation :

```
function arreter_mon_extension() {
  $horodatage = wp_next_scheduled( 'mon_extension_cron' );
  if ( $horodatage ) {
    wp_unschedule_event( $horodatage, 'mon_extension_cron' );
  }
}
register_deactivation_hook( __FILE__, 'arreter_mon_extension' );
```

Ce cas d'usage, annuler une tâche cron programmée avec `wp_schedule_event()`, est de loin le plus fréquent : sans cela, WP-Cron continuerait à déclencher l'événement même si le code qui le traite ne s'exécute plus normalement.

## À ne pas confondre

- Ce crochet ne doit pas supprimer les options ou les tables de l'extension : cette responsabilité revient au crochet de désinstallation, déclenché seulement lors d'une suppression définitive.
- Il se déclenche aussi lorsqu'une extension est automatiquement désactivée par WordPress à cause d'une erreur fatale détectée au chargement.
- Comme pour l'activation, la fonction associée doit être définie ou chargée avant l'appel à `register_deactivation_hook()`, sous peine que WordPress ne trouve rien à exécuter au moment voulu.
