Comment configurer les mises à jour automatiques en arrière-plan

Les types de mise à jour

Les mises à jour automatiques en arrière plan ont été introduites dans WordPress 3.7 dans le but de promouvoir une meilleure sécurité, et de globalement simplifier l’expérience liée aux mises à jour. Par défaut, seules les versions mineures – comme par exemple pour des raisons de maintenance et de sécurité – et les mises à jour de fichiers de traduction sont disponibles sur la plupart des sites. Dans certains cas particuliers, les extensions et les thèmes peuvent être mises à jour.

Dans WordPress, il existe quatre types de mises à jour automatiques en arrière-plan :

  1. Les mises à jour du cœur ;
  2. Les mises à jour des extensions ;
  3. Les mises à jour des thèmes ;
  4. Les mises à jour des fichiers de traduction.

Haut ↑

Les mises à jour du cœur

Les mises à jour du cœur se subdivisent en trois types :

  1. Les mises à jour du développement du cœur, connues sous le nom de « bleeding edge » ;
  2. Les mises à jour mineures du cœur, comme par exemple pour des raisons de maintenance et de sécurité ;
  3. Les mises à jour des versions majeures du cœur.

Par défaut, tous les sites ont les mises à jour automatiques activées pour les versions mineures du cœur et les fichiers de traduction.
Les sites fonctionnant avec une version de développement ont également les mises à jour des versions ultérieures de développement activées par défaut.

Haut ↑

Configuration des mises à jour

Les mises à jour automatiques peuvent être configurées en utilisant une des deux méthodes : la définition de constantes dans wp-config.php ou l’ajout de filtres à l’aide d’une extension.

Haut ↑

Configuration dans wp-config.php

En utilisant wp-config.php, les mises à jour automatiques peuvent être désactivées complètement, et les mises à jour du cœur peuvent être désactivées ou configurées en fonction du type de mise à jour.

Haut ↑

Constante pour désactiver toutes les mises à jour

Les développeurs du cœur ont pris volontairement la décision d’activer par défaut les mises à jour automatiques pour les versions mineures et les fichiers de traduction. Sur la durée, il s’agit d’un des meilleurs moyens de garantir que votre site reste à jour et sûr. C’est pourquoi il est fortement déconseillé de désactiver ces mises à jour.

Pour désactiver complètement tous les types de mises à jour automatiques, du cœur ou n’importe quelle autre, ajoutez le code suivant dans votre fichier wp-config.php :

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Haut ↑

Constante pour configurer les mises à jour du cœur

Pour activer les mises à jour automatiques pour les versions majeures du cœur ou les versions de développement, il faut commencer par définir la constante WP_AUTO_UPDATE_CORE. Définir cette constante par l’une des trois manières ci-dessous vous permet d’activer ou de désactiver plusieurs types de mises à jour du cœur en une fois.

define( 'WP_AUTO_UPDATE_CORE', true );

WP_AUTO_UPDATE_CORE peut être définie avec une des trois valeurs suivantes, chacune d’entre elles produisant un comportement différent :

  • valeur true – les mises à jour pour les versions de développement, mineures, et majeures sont toutes activées ;
  • valeur false – les mises à jour pour les versions de développement, mineures, et majeures sont toutes désactivées ;
  • valeur 'minor' – les mises à jour pour les versions mineures sont activées, les mises à jour pour les versions de développement et majeures sont désactivées.

Notez que seuls les sites fonctionnant déjà avec une version de développement recevront les mises à jour de développement.

Pour les sites utilisant une version de développement, la valeur par défaut de WP_AUTO_UPDATE_CORE est true. Pour les autres sites, la valeur par défaut de WP_AUTO_UPDATE_CORE est minor.

Haut ↑

Configuration à l’aide de filtres

L’utilisation de filtres permet de contrôler avec précision les mises à jour automatiques.

Le meilleur endroit pour utiliser ces filtres est au sein d’une extension indispensable.

N’ajoutez pas d’appel à la fonction add_filter() directement dans le fichier wp-config.php. WordPress n’est pas entièrement chargé à ce moment là et cela peut provoquer des conflits avec d’autres applications telles que WP-CLI.

Haut ↑

Désactivation de toutes les mises à jour à l’aide d’un filtre

Vous pouvez également désactiver toutes les mises à jour automatiques en utilisant le filtre suivant :

add_filter( 'automatic_updater_disabled', '__return_true' );

Haut ↑

Activation des mises à jour du cœur à l’aide d’un filtre

Pour activer les mises à jour du cœur uniquement, utilisez le filtre suivant :

add_filter( 'auto_update_core', '__return_true' );

Si plutôt que d’activer ou désactiver complètement les trois types de mises à jour du cœur, vous souhaitez le faire de manière sélective, WordPress fournit un filtre pour chacune d’elles : allow_dev_auto_core_updates, allow_minor_auto_core_updates et allow_major_auto_core_updates.

Il existe deux fonctions raccourcies intégrées à WordPress qui permettront d’activer ou de désactiver les mises à jour spécifiques du cœur en une seule ligne de code. Il s’agit des fonctions __return_true and __return_false. Voici ci-dessous quelques exemple de filtres.

Pour activer spécifiquement et individuellement chacune des mises à jour (pour désactiver, utiliser false au lieu de true):

add_filter( 'allow_dev_auto_core_updates', '__return_true' );           // Enable development updates
add_filter( 'allow_minor_auto_core_updates', '__return_true' );         // Enable minor updates
add_filter( 'allow_major_auto_core_updates', '__return_true' );         // Enable major updates

Pour les développeurs : pour activer les mises à jour même en présence d’un dossier de logiciel de gestion de versions (.git, .hg, .svn etc.) dans le répertoire WordPress ou l’un de ses répertoires parents :

add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );

Haut ↑

Configuration des mises à jour des extensions et des thèmes à l’aide d’un filtre

Par défaut les mises à jour automatiques en arrière-plan des extensions et des thèmes ne se produisent que dans des cas particuliers déterminés par la réponse renvoyée par l’API de WordPress.org qui est contrôlée par l’équipe de sécurité de WordPress afin de corriger les vulnérabilités critiques. Pour activer ou désactiver les mises à jour dans tous les cas, vous pouvez utiliser le filtre auto_update_$type, où $type doit être remplacé par « plugin » or « theme ».

Mises à jour automatiques pour toutes les extensions :

add_filter( 'auto_update_plugin', '__return_true' );

Mises à jour automatiques pour tous les thèmes :

add_filter( 'auto_update_theme', '__return_true' );

Vous pouvez utiliser __return_false au lieu de __return_true pour désactiver spécifiquement les mises à jour de toutes les extensions et de tous les thèmes, même en cas de mises à jour de sécurité forcées par l’équipe de sécurité de WordPress.

Le filtre auto_update_$type permet également un contrôle plus fin puisque l’élément spécifique à mettre à jour est également passé au filtre. Si vous souhaitez activer uniquement les mises à jour automatiques pour des extensions particulières, vous pourriez utiliser le code comme ceci :

function auto_update_specific_plugins ( $update, $item ) {
	// Array of plugin slugs to always auto-update
	$plugins = array (
		'akismet',
		'buddypress',
	);
	if ( in_array( $item->slug, $plugins ) ) {
		 // Always update plugins in this array
		return true;
	} else {
	 	// Else, use the normal API response to decide whether to update or not
		return $update;
	}
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

Haut ↑

Configuration des mises à jour des fichiers de traduction à l’aide d’un filtre

Les mises à jour automatiques des fichiers de traduction sont déjà activées par défaut, comme les mises à jour mineures du cœur.

Pour désactiver les mises à jour des fichier de traduction, utilisez la ligne de code suivante :

add_filter( 'auto_update_translation', '__return_false' );

Haut ↑

Désactivation des e-mails à l’aide d’un filtre

// Disable update emails
add_filter( 'auto_core_update_send_email', '__return_false' );

Ce filtre peut également être utilisé pour manipuler les e-mails de mise à jour en fonction du type d’e-mail $type (success, fail, critical), du type de mise à jour $core_update, ou du résultat de la mise à jour $result :

/* @param bool   $send        Whether to send the email. Default true.
@param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
@param object $core_update The update offer that was attempted.
@param mixed  $result      The result for the core update. Can be WP_Error.
*/
apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result );

Haut ↑

Ressources

Traduit par Emmanuel Hesry
Relu par Sébastien Serre & Jenny Dupuy
Dernière mise à jour le 14 décembre 2021

Contribuer à la documentation en français de WordPress

Journal des modifications

14 décembre 2021 Jenny Dupuy – Correction Resources –> Ressources