4.1 Le modèle de notification

WordPress sépare le retour d’information affiché dans l’administration de l’e-mail. Les mises à jour manuelles passent par les habillages ou AJAX ; les mises à jour en arrière-plan peuvent envoyer un e-mail à l’administrateur du site.

Fonctionnement

Les utilisateurs connectés voient des notifications, des pastilles de menu et l’écran Mises à jour, alimentés par les transients et les capacités. WP_Automatic_Updater envoie les e-mails des résultats d’arrière-plan par des méthodes dédiées. La sortie manuelle de WP-CLI reste dans le terminal, sauf si des crochets ajoutent du comportement. Désactiver le programme de mise à jour automatique supprime aussi ses e-mails de notification, d’après la documentation du cœur.

Déroulement

  1. La découverte met les transients à jour.
  2. L’interface d’administration lit les transients et affiche les informations de mise à jour.
  3. Si des mises à jour en arrière-plan s’exécutent, un e-mail peut partir à la fin.
  4. L’action automatic_updates_complete ne s’exécute que si WP_Automatic_Updater::run() enregistre au moins un résultat dans son tableau interne $update_results. Si le lot ne produit aucune tentative suivie, le crochet ne se déclenche pas (§4.7).

Référence

CheminCanal
Administration manuelleHabillage ou JSON AJAX
Arrière-planE-mail et crochets facultatifs
WP-CLISortie standard

Ressources pour les développeurs


4.2 Les notifications et les pastilles de menu dans l’administration

Les messages affichés dans l’administration reposent sur des crochets et des assistants, sans wp_mail(), pour signaler les mises à jour disponibles.

Fonctionnement

update_nag(), dans wp-admin/includes/update.php, s’attache à admin_notices et network_admin_notices à la priorité 3. Elle affiche une notification d’administration de type avertissement (via wp_admin_notice(), de type warning, avec des classes telles que update-nag) quand une mise à niveau du cœur est disponible dans get_preferred_from_update_core() avec response === 'upgrade'. Elle ne s’affiche pas sur update-core.php. Les utilisateurs sans la capacité update_core peuvent voir un texte les invitant à prévenir l’administrateur du site.

La bulle de comptage du menu d’administration utilise wp_get_update_data() depuis wp-admin/menu.php. Le widget « En un coup d’œil » utilise update_right_now_message() pour afficher un bouton de mise à jour quand c’est pertinent.

Déroulement

  1. La page d’administration s’affiche.
  2. Les transients fournissent les compteurs de mises à jour.
  3. Les capacités déterminent quels messages apparaissent.
  4. Aucun e-mail ne part par ces mécanismes seuls.

Référence

MécanismeObjet
update_nag()Notification de mise à niveau du cœur
Bulle de menuCompteurs de mises à jour agrégés
Widget « En un coup d’œil »Bouton d’action rapide quand l’utilisateur a les capacités

Ressources pour les développeurs


4.3 Santé du site : les tests de diagnostic liés aux mises à jour

Santé du site met en avant les risques de configuration. Elle ne bloque pas les mises à jour.

Fonctionnement

WP_Site_Health exécute des tests de diagnostic. Les tests de mise à jour en arrière-plan reflètent des facteurs proches de WP_Automatic_Updater::is_disabled() : constantes, filtres, détection VCS et indicateurs associés. Les tests de boucle locale vérifient que le serveur arrive à s’adresser une requête HTTP à lui-même (utile pour les éditeurs de fichiers et pour la détection des erreurs fatales de WordPress 6.6 et suivantes). WordPress 6.3 et suivantes ajoutent des contrôles sur l’écriture dans le dossier de sauvegarde et sur l’espace disque, liés aux sauvegardes temporaires du retour en arrière manuel. Les résultats sont purement informatifs : vérifiez le comportement dans le code du programme de mise à jour lors d’un diagnostic.

Déroulement

  1. La page Santé du site lance les tests.
  2. Chaque test renvoie un statut et des messages.
  3. Les administrateurs utilisent les résultats pour corriger les problèmes d’environnement.

Référence

SujetPertinence
Mises à jour en arrière-planReflète les conditions de désactivation
Boucle localeFonctions asynchrones et retour en arrière
Dossier de sauvegarde et espace disqueEspace pour le retour en arrière manuel

Ressources pour les développeurs


4.4 Les e-mails de mise à jour du cœur en arrière-plan

Les mises à jour automatiques du cœur envoient un e-mail à l’administrateur du site en cas de succès, d’échec, d’échec critique et, parfois, d’invitation à lancer la mise à jour à la main quand l’application automatique a été écartée.

Fonctionnement

WP_Automatic_Updater implémente des chemins comme after_core_update() et send_core_update_notification_email(). Les types incluent success, fail, critical et la notification manual (quand elle est conditionnée par l’indicateur notify_email de l’API et par des filtres). Les options de site auto_core_update_notified et auto_core_update_failed évitent les doublons ou programment des nouvelles tentatives.

Le filtre send_core_update_notification_email décide s’il faut envoyer le message « nouvelle version du cœur disponible » (l’invitation à la mise à jour manuelle). Le filtre auto_core_update_send_email ne s’applique qu’aux types success, fail et critical : il ne s’exécute pas pour les e-mails manual, car send_email() saute cette barrière quand $type === 'manual'. Le filtre auto_core_update_email modifie le message composé pour les envois qui passent par send_email().

Le destinataire est en général get_site_option( 'admin_email' ), avec un possible changement de locale.

Déroulement

  1. Une mise à jour du cœur en arrière-plan se termine ou échoue.
  2. Le cœur choisit le type d’e-mail.
  3. Les filtres concernés s’exécutent.
  4. wp_mail() envoie l’e-mail, sauf si un filtre le désactive.
  5. Les options de suivi empêchent les e-mails en double pour une même version.

Référence

CrochetTypeParamètresRemarques
send_core_update_notification_emailfiltreboolFaut-il envoyer l’e-mail de mise à jour manuelle disponible (chemin notify_email)
auto_core_update_send_emailfiltrebool, chaîneBarre les e-mails d’arrière-plan success, fail et critical — pas manual
auto_core_update_emailfiltretableauModifie destinataire, objet, corps et en-têtes pour send_email()

Ressources pour les développeurs


4.5 Les e-mails de mise à jour des extensions et des thèmes en arrière-plan

Les lots automatiques d’extensions et de thèmes peuvent envoyer des récapitulatifs en cas de succès, d’échec ou de résultats mitigés.

Fonctionnement

Après les mises à jour automatiques d’extensions ou de thèmes, after_plugin_theme_update() peut appeler send_plugin_theme_email() avec les types success, fail ou mixed.

auto_plugin_update_send_email et auto_theme_update_send_email reçoivent ( $enabled, $slice ), où $slice vaut $update_results['plugin'] ou $update_results['theme'] (les tableaux d’objets de résultat pour ce type), et non l’arborescence complète $update_results. auto_plugin_theme_update_email ajuste la charge utile finale de l’e-mail.

La valeur auto_plugin_theme_update_emails est stockée avec get_option() et update_option() (l’API d’options par site), et non avec get_site_option(), lorsqu’il s’agit de suivre les versions en échec pour limiter les messages répétés. Les messages de WordPress 6.6 et suivantes peuvent inclure les résultats d’un retour en arrière après une erreur fatale détectée par boucle locale.

Déroulement

  1. Un lot se termine.
  2. Le cœur décide s’il faut envoyer un e-mail.
  3. Des filtres ajustent ou suppriment l’e-mail.
  4. WordPress envoie le message à l’adresse e-mail de l’administration, sauf si un filtre l’en empêche.

Référence

CrochetTypeParamètresRemarques
auto_plugin_update_send_emailfiltrebool, tableauBarrière des e-mails de lot d’extensions ; le second argument est la liste des résultats d’extensions uniquement
auto_theme_update_send_emailfiltrebool, tableauBarrière des e-mails de lot de thèmes ; le second argument est la liste des résultats de thèmes uniquement
auto_plugin_theme_update_emailfiltretableauDestinataire, objet, corps et en-têtes finaux

Ressources pour les développeurs


4.6 Les e-mails de débogage (versions de développement)

Les versions de développement de WordPress peuvent envoyer un e-mail de journal de débogage après les mises à jour en arrière-plan, quand l’option est active.

Fonctionnement

Si le site exécute une version de développement (une chaîne de version contenant un tiret, comme un suffixe de version candidate) et que des résultats de mise à jour en arrière-plan existent, le cœur peut envoyer un e-mail de débogage. Le filtre automatic_updates_send_debug_email vaut vrai par défaut uniquement sur les versions de développement. Le filtre automatic_updates_debug_email ajuste la charge utile de cet e-mail.

Déroulement

  1. Un lot d’arrière-plan se termine sur une version de développement.
  2. Le chemin de l’e-mail de débogage évalue les filtres.
  3. Un e-mail facultatif part avec un contenu de diagnostic.

Référence

CrochetTypeParamètresRemarques
automatic_updates_send_debug_emailfiltreboolActive l’e-mail de débogage
automatic_updates_debug_emailfiltretableauAjuste la charge utile de l’e-mail

Ressources pour les développeurs


4.7 automatic_updates_complete : la charge utile des résultats

L’action automatic_updates_complete transmet un tableau structuré de résultats, pour la journalisation et les notifications externes. Quand vous exploitez ce crochet, examinez avec soin les types, les objets de résultat et les codes d’erreur.

Fonctionnement

do_action( 'automatic_updates_complete', $update_results ) se déclenche à la fin de WP_Automatic_Updater::run() quand des résultats existent. Le tableau correspond à la propriété interne update_results. Les clés de premier niveau sont les chaînes de type de mise à jour : core, plugin, theme et translation. Une clé n’existe que si le lot a tenté au moins une mise à jour de ce type. Chaque valeur est un tableau indexé numériquement d’objets de résultat.

Quand messages et result se contredisent en cas d’échec : quand une tentative échoue avec une WP_Error dans result (exemple courant : le code fs_unavailable quand WP_Filesystem ne peut pas s’initialiser), messages peut encore contenir une sortie d’habillage antérieure ou générique — parfois un message proche du succès (comme « le site dispose déjà de la dernière version ») qui ne reflète pas l’échec réel. Si vous construisez des diagnostics destinés à l’exploitation, inspectez result avec is_wp_error() et faites remonter le code et le message d’erreur, pas seulement un implode() de messages. Le texte de l’e-mail de débogage des mises à jour automatiques s’appuie sur les résultats structurés et sur WP_Error ; pour obtenir la même chose que ce journal, il faut fusionner les deux sources.

Signaux de retour en arrière : le cœur peut placer une WP_Error de code rollback_was_required dans result quand Core_Upgrader revient en arrière après un échec. Les mises à jour automatiques d’extensions sous WordPress 6.6 et suivantes peuvent utiliser des codes comme plugin_update_fatal_error_rollback_successful ou plugin_update_fatal_error_rollback_failed sur cette même propriété result, avec item qui identifie l’extension.

Déroulement

  1. L’exécution du lot se termine.
  2. Le cœur remplit un objet de résultat par tentative.
  3. automatic_updates_complete se déclenche uniquement si $update_results n’est pas vide à la fin de run(). Sinon, les écouteurs ne s’exécutent jamais.
  4. Votre extension peut gérer la journalisation ou des intégrations sortantes depuis ce crochet.

Référence

Structure de premier niveau :

FormeDétail
Clés de premier niveau'core', 'plugin', 'theme', 'translation' — présentes seulement si une tentative a eu lieu
Chaque valeurTableau numérique d’objets de résultat

Chaque objet de résultat :

PropriétéTypeDescription
itemobjetOffre de mise à jour issue du transient concerné
resulttrue, WP_Error ou autre valeur falsyLe succès est en général le booléen true ; les échecs sont le plus souvent une WP_Error ; d’autres valeurs falsy peuvent signaler un échec sans WP_Error dans des cas limites
namechaîneLibellé lisible
messagestableauChaînes issues du tampon de messages d’Automatic_Upgrader_Skin

Champs item courants selon le type :

TypeIdentifiantsVersion ou paquetAutres (liste non exhaustive)
corecurrent (version du ZIP proposé), souvent l’affichage versionresponse (autoupdate pour les candidats automatiques), locale, php_version, mysql_version, new_files, URL de téléchargement, autoupdate, disable_autoupdate le cas échéant
pluginplugin, slugnew_versionpackage, url, id, requires_php, autoupdate, disable_autoupdate
themetheme (identifiant de la feuille de style)new_versionpackage, url, requires_php, autoupdate, disable_autoupdate
translationtype (core, plugin ou theme), slug, languageversionpackage, autoupdate — objets issus des tableaux de traduction via wp_get_translation_updates()

Ressources pour les développeurs


4.8 L’e-mail de récupération après erreur fatale (WP_Recovery_Mode)

Une erreur fatale au démarrage peut déclencher le mode de récupération, qui envoie par e-mail un lien de connexion. Ce chemin est distinct des e-mails du programme de mise à jour automatique.

Fonctionnement

WP_Recovery_Mode, dans wp-includes/class-wp-recovery-mode.php, gère la détection et l’envoi de l’e-mail quand une erreur fatale casse le site après une modification. Ses déclencheurs, ses options et ses messages diffèrent de ceux de WP_Automatic_Updater. Ne confondez pas les deux lors du diagnostic d’une panne après mise à jour.

Déroulement

  1. Une erreur fatale survient.
  2. Le mode de récupération peut s’activer.
  3. WordPress envoie à l’administrateur du site un e-mail contenant un lien de connexion sécurisé.
  4. L’administrateur corrige le problème à l’aide de ce lien.
  5. Ce processus est distinct des e-mails de succès ou d’échec des mises à jour en arrière-plan.

Référence

ClasseFichierHérite deRôle
WP_Recovery_Modeclass-wp-recovery-mode.phpRécupération après erreur fatale et envoi de l’e-mail

Ressources pour les développeurs


Auteur

Photo de Quentin Le Duff

Quentin Le Duff

Quentin Le Duff est développeur WordPress depuis dix ans, certifié Opquast® Expert & ISTQB. Il travaille avec WordPress au quotidien : développement d’extensions open source et de thèmes, hébergement et maintenance des sites de ses clients, et rédaction sur l’écosystème WP.