Quand il s’agit de sécurité nous savons combien il est important de mettre à jour régulièrement les installations de WordPress (noyau, thèmes et extensions), et combien de temps le processus de mise à jour peut nous prendre, surtout lorsque nous avons installé un bon nombre d’extensions. Il est généralement recommandé de suivre ces étapes :

  1. Sauvegarde des fichiers et des tables de base de données
  2. Désactiver les extensions
  3. Mise à jour
  4. Activer les extensions une par une
  5. Vérifier le site web

Ce pourrait être une tâche fastidieuse pour un seul site, et pourrait être une tâche ennuyeuse et complexe lorsque nous devons mettre à jour cinq, dix sites ou plus.

Dans le but spécifique d’améliorer la sécurité de l’installation et de faciliter l’administration du site, WordPress 3.7 a introduit des mises à jour automatiques. Par défaut, cette fonction est activée pour les versions mineures (c’est-à-dire les versions de maintenance et de sécurité) et les fichiers de traduction, mais il est possible de personnaliser tout type de mise à jour. Ainsi, dans cet article, nous verrons comment automatiser le processus de mise à jour à chaque fois qu’une nouvelle version de WordPress est publiée, qu’il s’agisse du noyau, du thème ou d’une extension. Plongeons dans les mises à jour automatiques de WordPress !

Mises à jour automatiques de WordPress
Mises à jour automatiques de WordPress

Index des mises à jour automatiques

Mises à jour automatiques de WordPress

Il existe quatre typologies de mises à jour et de mises à jour automatiques WordPress :

  1. Mises à jour du noyau
  2. Mises à jour des extensions
  3. Mises à jour des thèmes
  4. Mises à jour des fichiers de traduction

Les mises à jour du noyau sont divisées en trois sous-types :

  1. Mises à jour de développement du noyau (disponible uniquement pour les installations de développement)
  2. Mises à jour mineures du noyau (maintenance et sécurité) – activées par défaut dans les installations stables
  3. Mises à jour majeures du noyau

WordPress vous permet d’automatiser le processus de mise à jour pour chacune de ces typologies en fournissant deux constantes wp-config.php et un bon nombre de filtres API.

Contrôle des mises à jour en arrière-plan via wp-config.php

WordPress fournit quelques constantes de wp-config.php qui nous permettent de contrôler les mises à jour automatiques. Régler AUTOMATIC_UPDATER_DISABLED sur TRUE désactivera tout type de mise à niveau automatique :

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE nous permet de contrôler les mises à jour du noyau (versions mineures, majeures et de développement). Cette constante peut être définie comme suit :

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables minor updates:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Dans les installations de développement, WP_AUTO_UPDATE_CORE prend par défaut la valeur true. Dans les installations stables, la valeur par défaut est mineure.

Par souci d’exhaustivité, je dois mentionner une constante supplémentaire qui peut être définie pour désactiver les mises à jour automatiques. Cependant, si vous réglez sa valeur sur true, les modifications de fichiers, les installations de thèmes, d’extensions et les mises à jour manuelles seront désactivées.

define( 'DISALLOW_FILE_MODS', true );

Au lieu de cela, vous pouvez préférer définir la constante DISALLOW_FILE_EDITS, qui désactiverait l’éditeur de fichiers, tout en conservant les fonctionnalités d’installation et de mise à jour.

Tutoriel similaire : Fichier wp-config.php – Une vue en profondeur sur la façon de configurer WordPress

Contrôle des mises à jour en arrière-plan à l’aide de filtres API

Les constantes de configuration fournissent un moyen général d’activer ou de désactiver les mises à jour automatiques. Mais WordPress fournit un certain nombre de filtres qui permettent un contrôle plus approfondi sur tout type de mise à jour.

Note : Les filtres doivent être utilisés dans les extensions, et les extensions « indispensables » sont une bonne option pour les mises à jour en arrière-plan. Les extensions indispensables (mu-plugins) sont dans un répertoire spécifique de /wp-content et sont automatiquement activées par WordPress. Ces extensions n’apparaissent pas dans l’écran des extensions WordPress, elles ne peuvent donc pas être accidentellement désactivées ou supprimées par les administrateurs du site. Pour une vue plus détaillée, reportez-vous à la section de documentation du codex

Tout d’abord, retourner true via le filtre AUTOMATIC_UPDATER_DISABLED a le même effet que définir la constante AUTOMATIC_UPDATER_DISABLED à true dans wp-config.php :

add_filter( 'automatic_updater_disabled', '__return_true' );

Nous pouvons contrôler n’importe quelle typologie de mise à jour grâce aux filtres de type auto_update_$type qui activent ou désactivent les mises à jour selon la valeur de $type (‘core‘, ‘plugin‘, ‘theme‘ ou ‘translation‘).

Ainsi, nous pouvons automatiser toutes les mises à jour du noyau en retournant true via le filtre auto_update_core :

add_filter( 'auto_update_core', '__return_true' );

Dans l’exemple suivant, nous activons les mises à jour automatiques pour les thèmes, les extensions et les traductions :

add_filter( 'auto_update_theme', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_translation', '__return_true' );

Dans les exemples ci-dessus, nous venons d’activer les mises à jour automatiques. Mais ces filtres nous donnent un plus grand contrôle sur les mises à jour. Dans l’exemple suivant, nous automatisons les mises à jour automatiques pour deux plugins spécifiques :

function cb_auto_update_plugins ( $update, $item ) {
	$plugins = array ( 'hello', 'akismet' );
	if ( in_array( $item->slug, $plugins ) ) {
		// update plugin
		return true; 
	} else {
		// use default settings
		return $update; 
	}
}
add_filter( 'auto_update_plugin', 'cb_auto_update_plugins', 10, 2 );

La fonction de rappel conserve deux arguments :

  1. $update: un booléen qui définit si cela doit être mis à jour ou non ;
  2. $item: l’objet de l’offre de mise à jour.

La fonction vérifie si l’élément à mettre à jour est dans le tableau $plugins puis retourne true ou false en conséquence.

Enfin, nous pouvons faire la différence entre les mises à jour de développement, les mises à jour mineures et les mises à jour majeures, en renvoyant true ou false à travers les filtres suivants :

add_filter( 'allow_dev_auto_core_updates', '__return_false' );
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
add_filter( 'allow_major_auto_core_updates', '__return_true' );

Nous savons qu’une mise à jour peut parfois échouer. Dans le pire des cas, le site peut se fermer après un échec de mise à jour. Mais heureusement, nous pouvons demander à WordPress de nous avertir par e-mail après toute mise à jour (ou tentative).

Emails de résultat, de notification et de débogage

Selon le résultat du processus de mise à jour, WordPress envoie un e-mail différent à l’adresse administrateur :

  • un e-mail de résultat est envoyé à la suite d’une mise à jour automatique du noyau
  • un e-mail de notification est envoyé lorsque WordPress n’a pas pu exécuter une mise à jour automatique
  • un e-mail de débogage est envoyé dans les versions de développement de WordPress.

Chaque fois qu’une mise à jour automatique réussit ou échoue, WordPress envoie un e-mail de résultat ou de notification avec un des sujets suivants :

  • Votre site a été mis à jour vers WordPress XXX (en cas de succès)
  • WordPress XXX est disponible. Veuillez mettre à jour ! (mise à jour échouée et mise à jour manuelle nécessaire : en cas d’échec)
  • URGENT : Votre site peut être en panne à cause d’une mise à jour échouée (mise à jour échouée et WordPress peut être en panne : cas critique)

Le filtre auto_core_update_send_email contrôle le résultat et les e-mails de notification. Ces e-mails peuvent être désactivés en renvoyant false comme ci-dessous :

apply_filters( 'auto_core_update_send_email', '__return_false' );

Si vous prévoyez d’étendre les mises à jour automatiques aux versions majeures du noyau et/ou des thèmes et extensions, vous pouvez préférer laisser les e-mails de résultat et de notification activés, ou les personnaliser en fonction du résultat ou de la typologie de mise à jour. Dans l’exemple suivant WordPress n’enverra pas le résultat par e-mail en cas de succès :

function cb_auto_core_update_send_email ( $send, $type, $core_update, $result ) {
	if ( !empty( $type ) && $type == 'success' ) {
		// don't send email
		return false; 
	}
		// use default settings
		return $send; 
	}
}
add_filter( 'auto_core_update_send_email', 'cb_auto_core_update_send_email', 10, 4 );

La fonction de rappel conserve les arguments suivants :

  • $send est un booléen qui détermine si un résultat ou une notification doit être envoyé par e-mail
  • $type est une chaîne de caractères qui définit le type d’e-mail à envoyer (succès, échec ou critique) ;
  • $core_update $core_update est l’objet de l’offre de mise à jour ;
  • $result $result est le résultat de la mise à jour du noyau (peut être un WP_Error).

Par défaut, les administrateurs sont avertis lorsque l’offre de mise à jour reçue de WordPress.org active un indicateur particulier et que l’installation ne peut pas être mise à jour. L’e-mail de notification ne sera envoyé qu’une seule fois par communiqué. Le filtre send_core_update_notification_email permet une certaine discrétion quant à l’envoi de ce type de notifications. Appliquer le filtre comme ci-dessous :

apply_filters( 'send_core_update_notification_email', '__return_true' );

Enfin, le filtre automatic_updates_send_send_debug_email contrôle les e-mails de débogage, qui fournissent des informations de journal utiles concernant les mises à jour effectuées. Par défaut, ces e-mails sont envoyés par les installations de développement. Retourner false empêchera WordPress d’envoyer des e-mails de débogage, tandis que retourner true activera ces e-mails même dans des installations stables :

apply_filters( 'automatic_updates_send_debug_email', '__return_true' );

Quand et pourquoi désactiver les mises à jour automatiques de WordPress

Le processus de mise à jour automatique est une grande fonctionnalité pour de nombreux utilisateurs, car ils peuvent économiser beaucoup de temps et de travail.

Mais même si les mises à jour automatiques sont vraiment sûres, nous devrions nous demander si c’est toujours une bonne idée de toutes les activer.

Occasionnellement, nous pourrions rencontrer des problèmes d’incompatibilité sur les thèmes et les extensions qui pourraient interrompre certaines fonctionnalités ou même mettre le site en panne. Si le site dépend d’un bon nombre d’extensions, il pourrait être plus sûr d’effectuer des mises à jour manuelles, au moins pour les extensions. Les traiter une par une nous permet de détecter rapidement les problèmes que l’automatisation rendrait difficiles à trouver.

De plus, si vous êtes développeur, vous devez faire attention aux noms que vous choisissez pour vos thèmes et extensions même si vous n’avez pas l’intention de les distribuer. Lors de l’exécution des mises à jour, WordPress recherche dans le répertoire des extensions les nouvelles versions de vos extensions et écrase vos fichiers si une extension portant le même nom est trouvée. Donc, si vous pensez activer les mises à jour en arrière-plan pour les thèmes et les extensions, assurez-vous de définir des noms uniques pour vos scripts.

Ouais, c’est beaucoup de bonnes choses pour les développeurs. Mais comment un utilisateur non développeur peut-il gérer les mises à jour automatiques ?

Contrôlez les mises à jour automatiques de WordPress à l’aide d’extensions

Si vous n’êtes pas développeur, vous pouvez contrôler les mises à jour automatiques de WordPress en utilisant une extension.

Easy Updates Manager permet aux utilisateurs administrateurs de contrôler les mises à jour de WordPress à la fois sur un seul site et sur les installations multisites. L’extension permet de gérer toutes les typologies de mises à jour de WordPress, et les thèmes et extensions peuvent être sélectionnés individuellement pour les mises à jour automatiques. D’autres fonctionnalités concernent les e-mails de notification, le blocage des utilisateurs et une journalisation des mises à jour des extensions.

Easy Updates Manager
Easy Updates Manager

En cas d’incompatibilité, il peut être nécessaire de revenir rapidement à une version précédente d’un thème ou d’une extension. WP Rollback vous permet de restaurer une version précédente de tous les thèmes et extensions installés à partir de l’écran Extensions. Cliquez simplement sur le lien Rollback et l’extension vous montrera une liste de toutes les versions disponibles.

Malheureusement, WP Rollback ne vous sera d’aucune aide si votre site tombe en panne, alors n’oubliez pas de sauvegarder et de lire attentivement la documentation en ligne.

WP Rollback
WP Rollback

Enfin, si vous avez besoin d’un test de compatibilité sur les mises à jour automatiques dans votre installation WordPress, Background Update Tester vous fournira les informations dont vous avez besoin.

Mises à jour automatiques pour les extensions et les thèmes premium

En tant que développeur d’extensions ou de thèmes WordPress premium, il est de votre devoir d’intégrer un mécanisme de mise à jour automatique dans vos produits pour offrir la même expérience de mise à jour transparente à laquelle les utilisateurs s’attendent des produits WordPress.org. C’est devenu la norme du marché d’aujourd’hui (pour une bonne raison). Vous pouvez héberger vous-même les produits premium et développer un mécanisme de mise à jour, ou exploiter des plateformes telles que Freemius, Kernl, ou WP Updates, qui offrent un référentiel sécurisé et des mises à jour automatiques en tant que service.

Résumé

Les mises à jour automatiques de WordPress sont une fonctionnalité formidable qui pourrait nous faire gagner beaucoup de temps et de travail, et nous permettre de garder notre site régulièrement mis à jour. Mais est-ce que vous activeriez toutes sortes de mises à jour ? Faites-le nous savoir dans les commentaires ci-dessous.

Carlo Daniele Kinsta

Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.