Tout savoir sur WordPress
Tutoriel WordPress

Limiter la mise à jour automatique à certains plugins & thèmes

Découvrez une méthode simple et rapide à mettre en place pour limiter les mises à jour automatique de WordPress à certains plugins et thèmes.

WordPress 3.7 est disponible depuis quelques jours et la fonctionnalité qui attire notre attention est la mise à jour automatique.

D’ailleurs, on remarque que ces mises à jour silencieuses provoquent toujours la même réaction : “je ne veux pas mettre à jour tout automatiquement”.

Par défaut, il faut savoir que la mise à jour automatique concerne uniquement les versions mineures de WordPress (par exemple: 3.7.x). Dans une précédente astuce, nous avons vu comment faire pour activer la MAJ auto des plugins et thèmes.

Aujourd’hui, je vous propose d’aller plus loin et limitant les mises à jour à certains plugins et thèmes WordPress.

Restreindre la MAJ à certains plugins

Pour les plugins, il suffit d’utiliser le filtre auto_update_plugin comme dans l’exemple ci-dessous. Ce code doit être inséré dans le fichier functions.php de votre thème :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


add_filter('auto_update_plugin', 'baw_do_not_update_this_plugins', 10, 2 );
function baw_do_not_update_this_ones( $update, $item ) 
{
	
    // On déclare un tableau contenant les plugins au format "dossier/fichier.php"
    $do_not_update_this_plugins = array( 'hello.php', 'mp6/mp6.php' );

    // Par défaut aucun plugin n'est mis à jour, ici on valide donc tous ceux qui ne sont PAS dans le tableau
    // On retourne alors un booléen équivalent à la non présence du plugin demandé dans notre tableau
    return !in_array( $item, $do_not_update_this_plugins );

}

[/pastacode]

Dans cet exemple, je ne souhaite pas mettre à jour les plugins Hello Dolly et MP6. Pour la suite, c’est à vous de personnaliser la variable $do_not_update_this_plugins afin d’insérer les plugins correspondants à votre choix.
Pour cela, vous devez respecter le format dossier/fichier.php ou hello.php pour Hello Dolly, juste le fichier.

Vous pouvez aussi faire l’inverse, c’est à dire de ne mettre à jour que la liste des plugins que vous ajoutez. Si vous préférez cette méthode, alors vous devez ajouter dans le tableau les plugins qui ont le droit d’être mis à jour automatiquement. Pour cela, il faut supprimer le ! de la ligne return !in_array().

Sachez qu’il n’est pas possible de mettre à jour automatiquement un mu-plugin, ni des plugins qui seraient dans d’autres dossiers que celui paramètre dans la constante WP_PLUGIN_DIR (par défaut /wp-content/plugins/).

Restreindre la MAJ à certains thèmes

Cette astuce fonctionne aussi pour les thèmes, il suffit de remplacer auto_update_plugin par auto_update_theme et de remplir le tableau avec juste le nom des dossiers des thèmes (par exemple : twentyten, pour TwentyTen):

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


add_filter('auto_update_theme', 'baw_do_not_update_this_themes', 10, 2 );
function baw_do_not_update_this_ones( $update, $item ) {
	// On déclare un tableau contenant les themes au format "dossier"
	$do_not_update_this_themes = array( 'twentyten', 'twentyeleven' );
	// Par défaut aucun thème n'est mis à jour, ici on valide donc tous ceux qui ne sont PAS dans le tableau
	// On retourne alors un booléen équivalent à la non présence du thème demandé dans notre tableau
	return !in_array( $item, $do_not_update_this_themes );
}

[/pastacode]

Forcer les mises à jour

Les mises à jour automatiques ne sont pas vérifiées tout le temps, ni même toutes les heures. Si vous désirez forcer 1 fois ces mises à jour, alors il faut ajouter ceci dans le fichier functions.php de votre thème :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

add_action( 'admin_init', 'wp_maybe_auto_update' );

[/pastacode]

Enfin, si vous souhaitez que cette vérification soit réalisée tout le temps (attention aux temps de chargement !) ajoutez encore ceci dans le fichier functions.php de votre thème :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

delete_option( 'auto_updater.lock' );

[/pastacode]

Pour aller plus loin : AutoUpdates Manager

Je suis en train de développer un plugin nommé AutoUpdates Manager. À l’aide de simples cases à cocher, il permettra d’autoriser les mises à jour sur ce que vous voulez : core, traductions, plugins, et thèmes. Comme pour cette astuce, vous pourrez choisir 1 à 1 ceux les plugins et/ou les thèmes qui peuvent faire partie de cette mise à jour automatisée.

Cet article a été mis à jour il y a 3831 jours - Il n'est peut être plus à jour !

Article écrit par Julio P.

Fondateur de SecuPress, l’extension de sécurité WordPress, Julio Potier est un Expert WordPress, un Formateur Expérimenté et un Consultant en Sécurité Web.

Il aime partager ses compétences et ses réflexions sur WordPress, donnant des conférences partout dans le monde.

26 Commentaires

  1. Cette astuce servira à certains ;)

    De mon côté, j’ai procédé à la MAJ sans aucun soucis, comme d’habitude. C’est toujours un plaisir WP :)

    Pis les évolutions proposées dans ce 3.7 me semble super, ça rendra surement les sites mal entretenus plus sûr et limitera de ce fait les fameux sites infectés dédiés à la propagation de malwares…

    Vivement le 3.8 et la réfection du back office !

  2. Avant de terminer l’article, j’ai posé la question mais pourquoi ne pas avoir une interface graphique pour filtrer les mises à jour au lieu d’être à chaque fois obligé d’ajouter un code ainsi que le modifier. Vers la fin, j’ai bien souri car j’ai trouvé la réponse.

  3. Bonjour Julio,

    Au risque de poser une question idiote, quelles sont les motivations à limiter les mises à jour automatiques à certains plugins ou thèmes?
    Autre question: qu’en est-il lorsqu’on supprime un des plugins ou thèmes concernés? Faut-il modifier à nouveau le code?
    Merci d’avance pour toutes ces précisions.

    Cordialement,

    Bruno

  4. Hello @Bruno : “pose une question et passe pour un idiot un jour, ne la pose pas et reste idiot toujours”, c’est une de mes phrases favorites ;) ta question, idiote ou pas, mérite d’avoir une réponse.
    Il arrive qu’on doive toucher au code d’un plugin afin qu’il colle aux demandes su client. Au lieu de le plagier, le renommer etc, je préfère simplement laisser le crédit à l’auteur d’origine et interdire sa mise à jour. Idem pour les thèmes donc.
    Si on supprime le plugin, rien ne se passe, il ne peut forcément pas être mis à jour.

    De rien !

  5. Merci Julio pour cette précision ;)
    Je n’avais en effet pas pensé aux thèmes et plugins auxquels on a apporté des modifications, alors c’est tout de suite plus clair pour moi.
    Voici donc la preuve qu’il ne faut pas se priver de poser des questions!
    Concernant les thèmes, ne vaut-il mieux pas opter pour un thème enfant qui permet ainsi de bénéficier des mises à jour sans craindre pour les modifications apportées?

    Amicalement,

    Bruno

  6. Bonjour Julio,

    « je ne veux pas mettre à jour tout automatiquement » je fais parti de ces personnes là, car s’il y a le moindre problème, je veux pouvoir être présent et avoir du temps pour essayer de le résoudre et bien d’autres raisons qui sont d’ordre technique.
    D’ailleurs, certains vont crier au scandale, car je ne suis pas encore passer à la version 3.7 en attendant un éventuel plugin qui permettrait, comme avant, de choisir le moment de cette remise à jour donc j’en viens à plusieurs questions:

    1)Est-ce que le plugin AutoUpdates Manager permettra cela? (j’ai bien vu le mot core est-ce wordpress?)
    2)Pourrait-on avoir une date de sortie approximative du plugin?
    3)Où pourra t’on ce le procurer?

    Cordialement,

    Lyne

  7. Hello Lyne
    Si tu passes en 3.7 alors les mises à jour auto ne se font que pour les langues et les mises à jour de sécurité, autant dire que tout est déjà bien paramétré.
    Le plugin sera dispo sur github (et non le repo pour une fois) et permettra de pousser les MAJ pour le core en version majeure, version dev (genre utiliser et MAJ en 3.8 avant tout le monde) et aussi de choisir quels plugins et thèmes peuvent être mis à jour automatiquement.
    Je mettrais le lien ici + article sur mon blog + github :)

  8. @Julio : Merci pour les informations sur le plugin AutoUpdates Manager, ainsi que de m’avoir éclairé sur les remises à jour automatique de WordPress, car Je ne l’avais pas compris ainsi, je vais pouvoir passer en version 3.7 rassurée.
    Cela ne fait que quelques mois que je suis sous WordPress et j’ai encore beaucoup à apprendre.

    Cordialement,

    Lyne

  9. J’arrive toujours pas à m’y faire à ces majs en automatique. Autant les mises à jours mineurs je suis d’accord pour les faire alors les grosses mises à jour pour moi c’est du suicide assurée. Imaginez une mise à jour pendant la nuit un samedi, le site plante c’est de la folie.

    Sinon merci encore à Julio pour ce que tu fais pour la communauté WordPress, j’aime bien l’option pour recevoir les éventuelles erreurs mais surtout la possibilité de choisir les plugins à mettre à jour ou non ;) C’est une superbe fonction

  10. @Marian : “c’est du suicide assuré.Imaginez une mise à jour pendant la nuit un samedi” il est évident de ne pas mettre en prod les mises à jour majeures si on a peur, et on dirait justement que tu te sens obligé de le faire. Je te conseille alors de ne rien installer et de laisser WordPress faire, comme ça, pas de panique inutile.
    Et, de rien

  11. AutoUpdates Manager cela veut dire avoir le code à insérer intégré dans le fichier functions.php sans être obligé de l’ajouter comme expliqué?

  12. Bonjour,

    PAs vu de différence je fais toujours les mises à jour, rien ne se fait automatiquement, normal ou il faut installer un plugin?

    Tiens un e question en passant, quand je reçois un mail de ton site pour m’avertir d’un nouveau commentaire, pas de lien hypertexte dans le mail, je suis obligé de faire un copier/coller pourquoi?

    Merci

  13. Je découvre cet article un peu tard ! Mais voila de quoi me convaincre de passer à WP 3.7. Merci beaucoup pour cette article et les fonctions détaillées plus haut. J’attends avec impatience ton plugin !

  14. bonjour,
    Depuis WP3.8 mise à jour automatique, @Graphiste freelance un CMS doit toujours être à jour.

  15. @darknote : depuis 3.7 et le super de l’article ici sont les plugins et thèmes, pas du CMS en lui même.

  16. Bonjour,
    @julio Potier : WordPress est passé tout seul sous WP3.8.1 , mise à jour automatique, je n’ai pas appuyé sur un bouton, un matin, je suis allé sur mon site et j’étais sous WP3.8.1 et non plus WP3.8.
    Je sais que l’article est sur les thèmes et les plugins, je voulais juste dire que depuis depuis WP3.8 que tout se met à jour CMS, plugins, thèmes.

  17. Oui j’ai compris ce que tu voulais dire et moi je te dis que les MAJ auto c’est “depuis 3.7”.

  18. bonjour,
    en théorie depuis WP3.7 mais moi cela ne fonctionnait pas, j’ai dû faire les mises à jour jusqu’à WP3.8 pour avoir les mises à jour automatiques, avant rien

  19. Salut Julio,

    Si ces mises à jour automatique sont conçus pour aboutir une bonne sécurité pour son blog WP, dans ce cas je suis totalement d’accord avec ces mises à jour et si l’intérêt de ces mises à jour est quelque chose d’autres dans ce cas j’aimerais bien arrêter les mises à jour automatiques tout de suite :)

    Alors, je crois que cette nouvelle est une bonne et une mauvaise à la fois et ça dépend de l’utilisateur.

    Bon courage l’équipe de Geekpress.

  20. C’est bien pratique ! En effet, une fois mon WordPress est passé en version 3.8 mais l’auteur d’un de mes thèmes n’avait pas prévu une futur compatibilité donc j’ai du rétrograder pour assurer le fonctionnement correct de mon thème

  21. Bonjour,
    Depuis WP3.9, je dois faire les mises à jour des plugins et des thèmes, je ne comprends pas pourquoi, rien changé dans ma configuration.
    Rétrograder n’est jamais bon, il faut mieux changer de thème mais bizarre WP n’a pas autant changer que cela pour q’un thème ne fonctionne pas sous WP3.9.1