Deshabilitar la notificación de actualización para complementos individuales

49

¿Hay alguna forma de deshabilitar las notificaciones de actualización para complementos específicos?

Como desarrollador de complementos, tengo algunos complementos instalados en mi sitio personal usando la versión del tronco svn para probar, pero los mismos complementos están disponibles en el sitio de complementos. En estos casos, WP considera que la última versión es la más reciente y trata constantemente de advertirme que hay actualizaciones disponibles.

Todavía quiero ver notificaciones de actualizaciones en otros complementos, ¡pero es molesto ignorar constantemente el Updates (2)aviso en el encabezado!

Caleb
fuente
Simplemente abra el archivo de complemento y cambie el número de versión a algo como 9.9.9
Bainternet
Lo siento @Bainternet, pero eso habría sido demasiado hackeo porque el sitio es una comprobación de svn y el complemento proviene de una svn:externalreferencia al código de desarrollo del complemento. Tener un archivo modificado localmente en un servidor de producción no es una opción. El filtro de Hameedullah funciona porque se guarda en el repositorio de código del sitio.
Caleb
Sí, me perdí la parte sobre el sitio que se ejecuta en svn
Bainternet
También puede usar el complemento Disable Updates Manager de Websiteguy en WordPress.org.
Mateo

Respuestas:

67

Por ejemplo, si no desea que Wordpress muestre notificaciones de actualización para akismet, lo hará así:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Hameedullah Khan
fuente
1
Lo coloqué al final de ./wp-config.php, reemplacé la ruta del archivo del complemento e hizo el trabajo.
Caleb
66
Puede poner eso en las funciones de su tema.php si no es posible, entonces puede ponerlo en un archivo de complemento por separado. En mi opinión, poner esto en wp-config.php no es una buena idea.
Hameedullah Khan
1
Realmente no quiero que mi función esté vinculada al tema, y ​​agregar un complemento parece un truco tan simple como piratear el complemento que tengo. ¿Puede explicar por qué cree que wp-config.php no es un buen lugar para poner hacks de configuración específicos del sitio?
Caleb
Muy buena solución, que funcionó bien para mí en functions.php. Es fácil agregar más complementos a la lista simplemente agregando otro unset () ... Buen consejo Hameedullah ..
Lars Koudal
2
Para aquellos con los mismos comentarios que @Caleb, cree en la carpeta wp-content una nueva carpeta llamada: mu-pluginsy cree un pequeño plugin que suelte aquí. Agregarlo como se mencionó anteriormente por algunos en wp-config.phpmi es absolutamente el lugar equivocado para hacer.
Charles
31

La respuesta de Hameedullah Khan arrojará una advertencia de PHP. Incluya esta cláusula if para verificar para asegurarse de que sea un objeto antes de desarmar la respuesta para ese complemento.

'Advertencia: intento de modificar la propiedad de no objeto'

Pruebe esto para evitar las advertencias (código para el archivo de complemento en sí):

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

Me gusta poner esto en el complemento real. Como solo he deshabilitado las actualizaciones en un complemento porque he editado o bifurcado el código y no quiero perder mis ediciones en una actualización, ya he editado el complemento y, por lo tanto, no me importa editarlo más. Mantiene mi archivo de funciones un poco más limpio. Pero si lo desea, puede ponerlo en el archivo de funciones y un beneficio de ese método es que puede eliminar múltiples complementos de las actualizaciones agregando otra línea no establecida para ese complemento de la siguiente manera (código para 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' );
círculo circular
fuente
Gracias por esto. Tuve problemas al usar este código directamente dentro de los complementos, parecía estar bien cuando era un complemento, pero tan pronto como lo hice con otros (nombres de funciones diferenciales) perdí las notificaciones para todos los complementos y el enlace "ver detalles" para los complementos wp-repo también desaparecido Usar sus cheques pero colocarlos en las funciones de mi tema.php ha sido más confiable sin interferencia de notificaciones de actualización para otros complementos. Por último, no estar en el complemento tiene el beneficio de no necesitar ese complemento para estar activo para que funcione. Deshabilitar un complemento con este código obviamente presentará notificaciones de actualización nuevamente.
Philip Ingram
2

Deshabilitar todas las notificaciones de actualización con código

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

El código deshabilitará las notificaciones de actualización para el núcleo, los complementos y los temas de WordPress.

Súper modelo
fuente
"complementos individuales" es la clave
Gangesh
@Gangesh, creo que quiere desactivar las notificaciones de algunas específicas de complementos
Super Model