Cómo desactivar las actualizaciones automáticas para un plugin específico en WordPress
Tengo un plugin que sé que nunca quiero actualizar. Soy consciente de que NO es la mejor práctica, pero en este caso es necesario hacerlo. ¿Hay alguna manera de evitar que WordPress me notifique sobre actualizaciones automáticas para un plugin en particular (pero que siga alertando normalmente para todos los demás plugins)?

coloca esto en el functions.php de tu tema
// Desactiva las notificaciones de actualización para plugins individuales - mira mi ejemplo del plugin block-spam-by-math-reloaded para ver cómo usar esta función
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' );

No entiendo por qué hay un código del botón Google +1 en tu respuesta... Probablemente un remanente...

Esta solución genera una advertencia al activar o desactivar cualquier otro plugin. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15

Si bien la respuesta de Tara funciona bien, requiere que el programador introduzca la ruta al archivo principal del plugin y solo funciona mientras ese tema en particular está activado. Una solución alternativa podría ser esta:
add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
return $value;
}
versión de una línea:
add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });
Coloca este código al inicio del archivo principal .php
del plugin que deseas desactivar. Si planeas usar esto más de una vez en tu sitio, cambia el _1234
en el filtro y nombre de la función por un conjunto diferente de números aleatorios para evitar nombres de funciones duplicados.
Es probable que si estás desactivando actualizaciones para un plugin en particular, es porque lo estás editando por alguna razón... así que agregar algunas líneas extra a ese plugin debería ser viable.

Estaba recibiendo advertencias PHP como las mencionadas por 'gurung' cuando instalaba o actualizaba otros plugins mientras usaba este código. Vi estas advertencias en WordPress 4.3.1.
Encontré algunas publicaciones en stackexchange sobre este problema y desarrollé una función que recorre el array de referencias de plugins. Primero verifica si existe una referencia a ese plugin (para evitar la advertencia PHP en objetos no existentes) y si existe el objeto, lo elimina como en el código original.
No he realizado pruebas unitarias, pero antes recibía advertencias PHP en cada actualización/instalación de plugins y ahora ya no las veo.
function filter_plugin_updates( $value ) {
// Agrega referencias a los plugins para los que quieres desactivar las notificaciones de actualización en el array $plugins
$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' );

Heredé un sitio con la implementación de NPC del fragmento de código de Tara, que arrojaba errores según el comentario de Gurung. Me volvió loco. Dudaba en editar código en un plugin, hasta que me di cuenta de que el fragmento es personalizado de todos modos.
Para eliminar los errores, cambia esto:
unset($value->response[ plugin_basename(__FILE__) ]);
por esto:
if($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
}
Puede ser obvio para algunos, pero la clave es que ya es personalizado, así que puedes editarlo, y probablemente no se sobrescribirá con actualizaciones porque el objetivo es evitar que actualices el plugin.

Puedes evitar actualizaciones simplemente renombrando la carpeta del plugin (o, en el caso de un plugin de un solo archivo, renombrando ese archivo PHP). Esta es, por mucho, la solución más simple. Además, este enfoque hace que el hecho de que hayas alterado el código sea transparente para los desarrolladores futuros, incluyendo el "tú futuro".

Una versión más alta en el archivo principal del plugin es lo mejor, pero solo cuando se agrega un truco especial. Llama a un número nulo/indefinido y luego permanecerá en esa versión. Ejemplo:
Versión:
Esto asegurará que en el año 2100 no se actualice después de la versión 9.9.9 o algo similar. Es un enfoque simple para plugins abandonados que en algún momento serán reemplazados.
