Lorsque vous utilisez WordPress, vous avez surement remarqué qu’une simple mise à jour peut poser des problèmes.

Pour éviter ce genre de désagréments, il est intéressant de pouvoir limiter l’installation des mises à jour à certains utilisateurs de l’outil. La plupart des contributeurs n’ont pas conscience de l’impact que peut avoir une mise à jour et ont simplement besoin de se concentrer sur le contenu…
En cachant les mises à jour, on peut gérer le moment de l’installation de celles-ci et anticiper les éventuels problèmes qui en découlent :

  • Un blocage du site à cause d’une erreur dans la nouvelle version du plugin ;
  • Une incompatibilité de version PHP avec votre serveur actuel ;
  • Une perte de référencement à cause d’un changement dans le fonctionnement d’un plugin ;

C’est pour éviter d’être confronté à ce genre de problème que nous contrôler l’accès à l’installation des mises à jour.
En injectant quelques lignes dans le fichier functions.php de votre thème, il est possible de complètement  cacher et désactiver les notifications de mise à jour. Pour pouvoir gérer au mieux les utilisateurs ayant accès, il convient de mettre en place une détection assez fine de l’utilisateur.

Détection de l’utilisateur en cours

Grâce au code suivant, vous pouvez détecter si l’utilisateur en cours à les droits administrateur ou vérifier son nom d’utilisateur. Ainsi vous pouvez effectuer des actions selon le type d’utilisateur connecté. Toutes les propriétés des objets WP_User peuvent être utilisées pour faire des tests.

NB: Dans cet exemple de code, une fonction anonyme a été utilisée, elles ne sont pas disponible avant la version 5.3 de PHP. Si vous utilisez une version antérieure, il faut déclarer la fonction, lui donner un nom et passer le nom dans une chaine de caractère à la place de la fonction anonyme…

Dans les exemples suivants, la fonction PHP create_function a été utilisé pour construire des fonctions qui retournent null. En effet la désactivation d’un hook ne nécessite pas de code particulier, on peut donc se passer de la création d’une réelle fonction.
C’est une méthode pour se passer des fonctions anonymes et ainsi avoir un maximum de compatibilité. Si vous pensez utiliser une version de PHP >= 5.3, il est conseillé d’utiliser une fonction anonyme à la place pour plus de lisibilité…

Désactivation des mises à jour de WordPress

Le filtre suivant permet de cacher les mises à jour de WordPress en désactivant l’exécution du filtre pre_site_transient_update_core.

Désactivation des mises à jour des thèmes

On applique le même fonctionnement pour les thèmes sauf qu’en plus du filtre on supprime aussi l’action wp_update_themes.

Désactivation des mises à jour des plugins

Exactement la même logique que les thèmes pour cacher les mises à jour de plugins. Les plugins sont les éléments les plus incertains de l’écosystème WordPress, il faut donc les gérer correctement.

Désactivation des notifications de mises à jour de WordPress

Les notifications de mise à jour sont affichées dans un petit bandeau en haut du dashboard sur l’administration de WordPress. Vous pouvez supprimer l’affichage de ce bandeau pour tous les utilisateurs ou une partie (voir l’exemple de filtre plus haut…).

Lorsque ce bandeau ne sera plus affiché, il cachera simplement les demandes de mise à jour de WordPress mais pas des thèmes ou plugins. Il faut le combiner avec les autres éléments pour avoir une solution complète.

Exemple complet de blocage pour les utilisateurs  qui ne sont pas « super administrateurs »