Votre client exige que vous lui donniez un accès Super Administrateur à son site WordPress flambant neuf (c’est son droit), et même si vous lui proposez un service de maintenance technique régulière, il ne peut pas s’empêcher d’aller tout casser sur son site, dès que vous avez le dos tourné, notamment en lançant agressivement les mises à jour de son thème WordPress, du CMS et des plugins en mode freestyle méga cool, souvent après avoir encodé 400 produits WooCommerce, dans la matinée, mais sans faire de backup l’après-midi. 😀 

Bref. Une seule solution pour ne pas se faire réveiller toutes les semaines en urgence dans la nuit du vendredi au samedi par ce client un peu trop aventurier ! Il faut désactiver les mises à jour de WordPress, en désactivant celles-ci, grâce à la force du… Code Source (cette contrée réservée aux geeks d’au delà du mur).

Votre client n’y comprend rien au code, et tant mieux ! Ça vous évitera de vous dessécher la bouche toutes les trois semaines pour lui rappeler que, même si parfois, ça lui réussit plutôt bien de faire ses mises à jour tout seul (clic-clic), ça reste une opération qui ne se fait pas n’importe comment !

(Oui, j’aime les intros rigolotes… Mr WP is still alive ! 😀 )

Disclaimer : cette pratique comporte des risques. Avant d’implémenter cette solution, lisez bien jusqu’au bout mon avertissement concernant la sécurité WordPress (voir ci-dessous).

Bon ! Rentrons dans le vif du sujet !

Comment désactiver les mises à jour WordPress et notifications d’updates ?

Pour que votre client ne casse pas tout et que votre site ne se casse pas tout seul lors d’une mise à jour automatique, vous pouvez installer le plugin Disable All WordPress Updates. Le seul inconvénient de cette solution, c’est que votre client pourra très facilement désactiver ce plugin via l’onglet « extensions WordPress ». Voici comment procéder pour solutionner cela.

Désactiver les mises à jour WordPress via le code source (functions.php) ou un mu-plugin

Pour résoudre le potentiel problème cité ci-dessus, il y a plusieurs solutions possibles.

  1. Placer mon code perso dans le fichier functions.php de votre child-theme
  2. Créer un mu-plugin : disable-updates.php

1. Placer mon code perso dans le fichier functions.php de votre child-theme

Si tu ne sais pas comment créer un child-theme, ni comment éditer ton fichier functions.php, tu as des cours de rattrapage à prendre en WordPress ! 😉 Bon, allez, ce n’est pas grave. Si tu galères, passe à la solution suivante. 

Voici le code à copier-coller dans votre fichier functions.php pour désactiver les mises à jour WordPress automatiques, les notifications, etcetera.

/* HANDLE WORDPRESS UPDATE.
* Reason of this custom code :
* we want to avoid broken website by aggressive updates.
* In some cases, some customers don't want pay extra money for renew their plugins licences
* and few plugins can be discontinued and need to be changed, that can require additional fees.
* To handle these situations, we need to ask to agreement of the customer.
* Is he ready to pay for additional annual licences and development fees ?
*/
// Disable automatic WordPress plugin updates :
add_filter( 'auto_update_plugin', '__return_false' );
// Disable automatic WordPress theme updates :
add_filter( 'auto_update_theme', '__return_false' );
// Disable All Update Notifications with Code. Just like the plugin described at the beginning of this comment, the code below will disable update notifications for the WordPress core, plugins, and themes.
function remove_core_updates(){
global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,);
}
add_filter('pre_site_transient_update_core','remove_core_updates');
add_filter('pre_site_transient_update_plugins','remove_core_updates');
add_filter('pre_site_transient_update_themes','remove_core_updates');

2. Créer un mu-plugin : disable-updates.php

Cette deuxième solution est encore meilleure que d’utiliser le fichier functions.php de votre child-theme ! S’il est vraiment très malin, votre client peut switcher d’un thème à un autre grâce à son compte administrateur, et faire les updates ni vu ni connu j’t’embrouille.

Vous pouvez donc créer un plugin non désactivable via le tableau de bord de WordPress, c’est-à-dire un Must-Use plugin (mu-plugin).

Pour ce faire, dans votre dossier /wp-content/, créez manuellement un dossier /mu-plugins/ dans lequel vous allez créer un fichier disable-updates.php avec le code suivant :

https://gist.github.com/MisterWP/9ac7a433fe01bbd1b8afce6b9e0e1c12

Ce mu-plugin va se retrouver dans votre tableau de bord WordPress, sous l’onglet mu-plugins de votre onglet « extensions ». La vie est belle !

Vous pouvez lire et modifier les petits commentaires PHP indiqués dans ce bout de code et les adapter à votre clientèle si nécessaire.

Autre bout de code pour désactiver complètement toutes les updates WordPress

Si vous voulez, alternativement, vous pouvez même copier-coller le code source du plugin cité plus haut (Disable All WordPress Updates) dans votre mu-plugin, à la place de mon code perso, ça fonctionne aussi !

https://gist.github.com/MisterWP/ac9a841615c16c701eb605b81e72ef26

À vous de lire ce code source complet pour comprendre son fonctionnement. Ça fait 300 lignes, contre 30 lignes pour ma solution.  Ce plugin (Disable All WordPress Updates) est bien maintenu et mis à jour assez régulièrement pour l’instant. Dites-moi en commentaire ci-dessous la solution que vous avez choisie ! 😉

Avertissement sur les mises à jour, la maintenance et la sécurité de WordPress !

Ces solutions doivent être utilisées avec beaucoup de précaution et uniquement si vous savez ce que vous faites ! En désactivant les mises à jour manuelles et automatiques, vous devez impérativement avoir un bon process de monitoring (surveiller votre site Web régulièrement), de bonnes sauvegardes quotidiennes, un hébergement sécurisé, et vous devez penser à désactiver votre disabler régulièrement pour faire les mises à jour à la main, sans quoi, vous allez manquer des mises à jour de sécurité et vous risquez de vous faire pirater votre site WordPress.

Aussi, si vous mettez ça en place à un client, je vous recommande vivement de faire du durcissement de sécurité WordPress (hardening) pour renforcer quelques points de sécurité. Ça ne mange pas de pain.

Plus d’info dans cette vidéo où je balance tout sur la sécurité WordPress, y compris, comment je m’y prend pour nettoyer un site :