Desactivar actualización automática para complemento único

10

Tengo un complemento que sé que nunca quiero actualizar. Soy consciente de que esta NO es la mejor práctica, pero en este caso debe hacerse. ¿Hay alguna manera de evitar que WordPress me pida que actualice automáticamente un complemento en particular (pero aún así está alerta de forma normal para todos los demás complementos)?

GavinR
fuente
66
Aumente el número de versión dentro del archivo principal del complemento ... por ejemplo. 99.9... y también hacer que el mismo cambio en el archivo readme para la buena medida (aunque no creo que realmente se requiere) ..
t31os
¿El ajuste de los números de versión seguirá funcionando si el complemento actualiza sus números de versión a algo así 1.10.1?
emc

Respuestas:

11

colocas esto en las funciones de tu tema.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' );
Tara
fuente
No entiendo por qué hay un código de botón Google +1 en su respuesta ... Probablemente un sobrante ...
brasofilo
sobrante. Lo siento.
Tara
3
Esta solución arroja una advertencia al habilitar o deshabilitar cualquier otro complemento. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
Gurung
¿En qué versión de WP estás usando esto?
fedmich
7

La respuesta de T31os fue correcta: aumente el número de versión dentro del archivo principal del complemento ... por ejemplo. 99.9 ... y también hacer el mismo cambio dentro del archivo readme para una buena medida (aunque no creo que sea realmente necesario) .. - t31os

GavinR
fuente
5

Si bien la respuesta de Tara funciona bien, requiere que el programador ingrese la ruta al archivo del complemento principal y solo funciona mientras ese tema en particular está habilitado. Una solución alternativa podría verse así:

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

Coloque este código en la parte superior del .phparchivo principal del complemento que desea deshabilitar. Si planea usar esto más de una vez en su sitio, cambie el nombre _1234del filtro y la función a un conjunto diferente de números aleatorios para evitar nombres de funciones duplicados.

Lo más probable es que si deshabilita las actualizaciones para un complemento en particular, es porque lo está editando por alguna razón ... por lo que agregar algunas líneas adicionales a ese complemento debería ser viable.

emc
fuente
1
En mi opinión, esta es la mejor respuesta, especialmente si está deshabilitando las actualizaciones porque está editando el complemento usted mismo. Gracias emc.
Nathan
3

Estaba recibiendo advertencias de PHP como 'gurung' mencionado anteriormente cuando instalé o actualicé otros complementos cuando estaba usando este código. Vi las advertencias de PHP en WP 4.3.1.

Encontré algunas otras publicaciones en stackexchange sobre el problema y se me ocurrió una función que recorre su matriz de referencias de complementos y primero comprueba si ya hay una referencia a ese complemento (para evitar la advertencia de PHP en objetos que no son objetos). si no hay uno) y si hay un objeto, lo desarmará como el código original.

No he hecho pruebas unitarias, pero recibí advertencias de PHP en cada actualización / instalación de complementos y ahora no las veo.

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' );
el embaucador
fuente
1

O simplemente renómbralo para que 'no' sea el mismo complemento.
Debe cambiar el nombre no solo de la carpeta sino también en el encabezado léame y el complemento.

anmari
fuente
1

Heredé un sitio con la implementación de npc del recorte de código de Tara, que arrojó errores por comentario de gurung. Me volvió loco. Dudé en editar el código en un complemento, hasta que me di cuenta de que el snipper es personalizado de todos modos.

Para eliminar los errores, cambie esto:

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

a esto:

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

Puede ser obvio para algunos, pero la clave es que ya está personalizado para que pueda editarlo, y probablemente no se sobrescribirá con las actualizaciones porque el objetivo es evitar que actualice el complemento.

Phreditor
fuente
0

Puede evitar actualizaciones simplemente renombrando la carpeta del complemento (o, en el caso de un complemento de un solo archivo, renombrando ese archivo PHP). Esta es, con mucho, la solución más simple. Además, este enfoque hace que el código modificado sea transparente para futuros desarrolladores, incluido el "futuro tú".

nydame
fuente
0

Es mejor una versión superior en el archivo de complemento principal, pero solo cuando se agrega un hack especial. Llama a un número nulo / indefinido y luego permanecerá en esa versión. Ejemplo:

Versión:

Esto asegurará que en 2100 no se actualizará después de 9.9.9 o algo así. Es un enfoque simple para complementos abandonados que en algún momento serán reemplazados.

Patryk Padus
fuente