Désactiver la notification de mise à jour pour des plugins individuels

49

Est-il possible de désactiver les notifications de mise à jour pour des plugins spécifiques?

En tant que développeur de plug-in, j'ai installé certains plug-ins sur mon site personnel en utilisant la version svn trunk à des fins de test, mais les mêmes plug-ins sont disponibles à partir du site de plug-in. Dans ces cas, WP considère la dernière version comme la version la plus récente et tente en permanence de m'avertir que des mises à jour sont disponibles.

Je veux toujours voir les notifications de mises à jour sur d'autres plugins, mais c'est ennuyeux d'ignorer constamment la Updates (2)notification dans l'en-tête!

Caleb
la source
Ouvrez simplement le fichier plugin et changez le numéro de version à quelque chose comme 9.9.9
Bainternet
Désolé, @Bainternet, mais cela aurait été trop fictif, car le site est un fichier svn-checkout et le plugin provient d'une svn:externalréférence au code de développement du plugin. Avoir un fichier modifié localement sur un serveur de production n'est pas une option. Le filtre de Hameedullah fonctionne car il est enregistré dans le référentiel de code du site.
Caleb
Ouais, j'ai raté la partie sur le site en cours d'exécution sur svn
Bainternet
Vous pouvez également utiliser le plugin Disable Updates Manager de Websiteguy sur WordPress.org.
matthew

Réponses:

67

Par exemple, si vous ne souhaitez pas que Wordpress affiche les notifications de mise à jour pour akismet, procédez comme suit:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Hameedullah Khan
la source
1
Je l'ai placé à la fin de ./wp-config.php, remplacé le chemin du fichier du plugin et il a fait le travail.
Caleb
6
Vous pouvez mettre cela dans le fichier functions.php de votre thème, si ce n'est pas possible, puis vous pouvez mettre un fichier de plugin séparé. À mon avis, placer ceci dans wp-config.php n'est pas une bonne idée.
Hameedullah Khan le
1
Je ne veux pas vraiment que ma fonction soit liée au thème, et ajouter un plugin me semble être aussi simple qu'un hack, juste pour bidouiller le plugin que j'ai. Pouvez-vous expliquer pourquoi vous pensez que wp-config.php n'est pas un bon endroit pour mettre en place des piratages de configuration spécifiques au site?
Caleb
Très bonne solution, qui a bien fonctionné pour moi dans functions.php. Il est facile d'ajouter d'autres plugins à la liste en ajoutant simplement un autre unset () ... Bon conseil Hameedullah ..
Lars Koudal
2
Pour ceux avec les mêmes remarques que @Caleb, créez dans le dossier wp-content un nouveau dossier nommé: mu-pluginset créez un petit plugin que vous déposerez ici. L’ajouter tel que mentionné ci-dessus par certains wp-config.phpest à mon avis absolument le mauvais endroit à faire.
Charles
32

La réponse de Hameedullah Khan émettra un avertissement PHP. Incluez cette clause if à vérifier pour vous assurer qu'il s'agit bien d'un objet avant de réinitialiser la réponse pour ce plugin.

'Avertissement: tentative de modification de la propriété de non-objet'

Essayez ceci pour éviter les avertissements (code du fichier de plugin lui-même):

// remove update notice for forked plugins
function remove_update_notifications($value) {

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

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );

J'aime mettre cela dans le plugin actuel. Comme je n'ai jamais désactivé que les mises à jour sur un plugin parce que j'ai édité ou fourchi le code et que je ne veux pas perdre mes modifications sur une mise à jour, j'ai déjà édité le plugin et je ne crains donc pas de le modifier davantage. Cela garde mon fichier de fonctions un peu plus propre. Mais si vous le souhaitez, vous pouvez le mettre dans le fichier de fonctions et un avantage de cette méthode est que vous pouvez supprimer plusieurs plugins des mises à jour en ajoutant une autre ligne non définie pour ce plugin, comme ceci (code pour functions.php):

// remove update notice for forked plugins
function remove_update_notifications( $value ) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ 'hello.php' ] );
        unset( $value->response[ 'akismet/akismet.php' ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );
circlecube
la source
Merci pour ça. J'ai eu des problèmes en utilisant ce code directement dans les plugins, cela semblait bien quand il s'agissait d'un plugin, mais dès que je l'ai fait avec d'autres noms (diff func), j'ai perdu les notifications pour tous les plugins et le lien "afficher les détails" pour les plugins wp-repo également disparu. Utiliser vos chèques mais placer dans le functions.php de mon thème a été plus fiable sans interférence des notifications de mise à jour pour les autres plugins. Enfin, ne pas être dans le plugin a l'avantage de ne pas avoir besoin de ce plugin pour être actif. Désactiver un plugin avec ce code présentera évidemment à nouveau les notifications de mise à jour.
Philip Ingram
2

Désactiver toutes les notifications de mise à jour avec du code

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');

Code désactivera les notifications de mise à jour pour le noyau, les plugins et les thèmes WordPress.

Super modèle
la source
"plugins individuels" est la clé
Gangesh
@Gangesh, je pense qu'il veut désactiver les notifications de certains plugins
Super Model