J'ai apporté des modifications personnalisées à un plugin. Lorsque nous obtenons notification de la mise à niveau officielle de ce plug-in dans WP, un développeur doit effectuer la mise à niveau manuellement, car les fichiers modifiés doivent être intégrés à la nouvelle version.
Nous ne voulons pas qu'un membre du personnel clique accidentellement sur le bouton de mise à niveau de ce plug-in en effectuant une série de mises à niveau.
Cependant, nous souhaitons toujours voir la notification de mise à niveau afin qu'un développeur puisse planifier la mise à jour. Donc, augmenter le numéro de version dans l'en-tête à une valeur très élevée n'est pas une solution, car cela bloque cette visibilité.
Comment puis-je empêcher WP de pouvoir effectuer la mise à niveau et que le plug-in soit toujours valide?
Tout d'abord ... C'est une très mauvaise idée de modifier un plugin existant.
Mais si vous devez vraiment faire cela, alors vous pouvez masquer le lien de mise à jour avec ce code (celui-ci fonctionne pour Yoast SEO):
function remove_update_notification_link($value) {
if ( array_key_exists('wordpress-seo/wp-seo.php', $value->response) ) {
$value->response[ 'wordpress-seo/wp-seo.php' ]->package = '';
}
return $value;
}
add_filter('site_transient_update_plugins', 'remove_update_notification_link');
L'avis sera affiché, mais au lieu du lien à mettre à jour, il y aura l'information suivante: "La mise à jour automatique n'est pas disponible pour ce plugin."
Si vous mettez ce code directement dans le plugin, vous pouvez utiliser une méthode plus automatique:
function remove_update_notification_link($value) {
if ( array_key_exists(plugin_basename(__FILE__), $value->response) ) {
$value->response[ plugin_basename(__FILE__) ]->package = '';
}
return $value;
}
add_filter('site_transient_update_plugins', 'remove_update_notification_link');
Dans le fichier functions.php
du thème actif, ajoutez ces lignes
function filter_plugin_updates( $value ) {
unset( $value->response['path_to_plugin/plugin_name.php'] ); // one plugin by line
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Ceci cachera complètement l'exigence de mise à jour. Vous devrez vérifier si une mise à jour est disponible en commentant le code.
La réponse de @ Core92 est correcte, sauf que cela émet un avertissement lors de l'activation/désactivation d'autres plugins:
function filter_plugin_updates( $value ) {
$toAvoid='path_to_plugin/plugin_name.php';
if( isset( $value->response[$toAvoid]) )
unset( $value->response[$toAvoid] );
return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );