Désactiver la mise à jour automatique pour un plugin unique


10

J'ai un plugin que je sais que je ne veux jamais mettre à jour. Je suis conscient que ce n'est PAS la meilleure pratique, mais dans ce cas, cela doit être fait. Existe-t-il un moyen d'empêcher WordPress de m'inviter à mettre à jour automatiquement un plugin particulier (mais toujours en alerte comme d'habitude pour tous les autres plugins).


6
Augmentez le numéro de version dans le fichier principal du plugin .. par exemple. 99.9... et effectuez la même modification dans le fichier Lisez-moi pour faire bonne mesure (bien que je ne pense pas que ce soit réellement nécessaire) ..
t31os

L'ajustement des numéros de version fonctionnera-t-il toujours si le plugin met à jour ses numéros de version en quelque chose comme 1.10.1?
emc

Réponses:


11

vous placez cela dans les fonctions de votre thème.php

// Disable update notification for individual plugins - see my example of plugin block-spam-by-math-reloaded as to how to use this function

function filter_plugin_updates( $value ) {
    unset( $value->response['plugin-folder-name/plugin-file-name.php'] );    
    return $value;
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Je ne comprends pas pourquoi il y a un code de bouton Google +1 dans votre réponse ... Probablement un reste ...
brasofilo

laissé pour compte. Désolé.
Tara

3
Cette solution génère un avertissement lors de l'activation ou de la désactivation de tout autre plug-in. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
gurung

gurung sur quelle version de WP utilisez-vous cela?
fedmich

7

La réponse de T31os était juste: augmentez le numéro de version dans le fichier principal du plugin .. par exemple. 99,9 ... et aussi faire le même changement à l'intérieur du fichier readme pour faire bonne mesure (bien que je ne pense pas que ce soit réellement nécessaire) .. - t31os


5

Bien que la réponse de Tara fonctionne bien, elle nécessite que le programmeur entre le chemin d'accès au fichier du plugin principal et il n'est fonctionnel que lorsque ce thème particulier est activé. Une solution alternative pourrait ressembler à ceci:

add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}

version à une ligne:

add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });

Placez ce code en haut du .phpfichier principal du plugin que vous souhaitez désactiver. Si vous prévoyez d'utiliser cela plus d'une fois dans votre site, remplacez le _1234filtre et le nom de la fonction par un ensemble différent de nombres aléatoires pour éviter les noms de fonction en double.

Les chances sont que si vous désactivez les mises à jour pour un plugin particulier, c'est parce que vous le modifiez pour une raison quelconque ... donc l'ajout de quelques lignes supplémentaires à ce plugin devrait être viable.


1
C'est la meilleure réponse à mon avis, surtout si vous désactivez les mises à jour parce que vous modifiez le plugin vous-même. Merci emc.
Nathan

3

J'obtenais des avertissements PHP comme «gurung» mentionné ci-dessus lorsque j'ai installé ou mis à jour d'autres plugins lorsque j'utilisais ce code. J'ai vu les avertissements PHP dans WP 4.3.1.

J'ai trouvé d'autres articles sur stackexchange sur le problème et j'ai trouvé une fonction qui parcourt votre tableau de références de plugins et vérifie d'abord s'il y a déjà une référence à ce plugin (pour éviter l'avertissement PHP sur les non-objets s'il n'y en a pas) et s'il y a un objet, il le désactive comme le code d'origine.

Je n'ai pas fait de tests unitaires mais recevais des avertissements PHP à chaque mise à jour / installation de plugins et maintenant je ne les vois plus.

function filter_plugin_updates( $value ) {

  // Add references to plugins you want to disable update notices for in the $plugins array
  $plugins = array(
    'k-elements/setup.php'
  );

  foreach( $plugins as $plugin ) {
    if ( isset( $value->response[$plugin] ) ) {
      unset( $value->response[$plugin] );
    }
  }

  return $value;

}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

1

Ou vous le renommez juste pour qu'il ne soit pas le même plugin.
Vous devez renommer non seulement le dossier mais aussi dans le readme et l'en-tête du plugin.


1

J'ai hérité d'un site avec l'implémentation par npc du code snip de tara, qui a généré des erreurs par le commentaire de gurung. M'a rendu fou. J'hésitais à éditer du code dans un plugin, jusqu'à ce que je réalise que le snipper est de toute façon personnalisé.

Pour éliminer les erreurs, changez ceci:

unset($value->response[ plugin_basename(__FILE__) ]);

pour ça:

if($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
}

Cela peut être évident pour certains, mais la clé est qu'il est déjà personnalisé afin que vous puissiez le modifier, et il ne sera probablement pas écrasé par les mises à jour car le but est de vous empêcher de mettre à jour le plugin.


0

Vous pouvez empêcher les mises à jour simplement en renommant le dossier du plugin (ou, dans le cas d'un plugin à fichier unique, en renommant ce fichier PHP). C'est de loin la solution la plus simple. De plus, cette approche rend le fait que vous avez modifié le code transparent pour les futurs développeurs, y compris "future you".


0

Une version supérieure dans le fichier du plugin principal est préférable, mais uniquement lors de l'ajout d'un hack spécial. Il appelle un numéro nul / non défini et restera alors dans cette version. Exemple:

Version:

Cela garantira qu'en 2100, il ne sera pas mis à jour après 9.9.9 ou quelque chose comme ça. C'est une approche simple pour les plugins abandonnés qui seront parfois remplacés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.