He instalado el complemento Google Analyticator en mi sitio. También estoy usando el complemento MobilePress para ofrecer un tema diseñado para navegadores móviles que no sean teléfonos inteligentes. He configurado Google Analytics para dispositivos móviles para su uso en este tema y me gustaría deshabilitar el complemento Analyticator ya que incluye una llamada a un archivo js más grande.
¿Alguien sabe si es posible deshabilitar un complemento usando functions.php o algún otro método?
Creo que he localizado el código que agrega las funciones a la página, así que si no es posible deshabilitar todo el complemento, ¿es posible detener las acciones para la ejecución? He tratado de desactivarlos directamente sin suerte. Aquí está el código del archivo de complemento:
add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');
Traté de eliminar esas acciones con:
remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');
Cualquier ayuda es muy apreciada.
Respuestas:
Cuando WordPress activa un complemento, llama a la
activate_plugin()
función. Esta función activa el complemento en un sandbox y redirige a otro lugar en caso de éxito. Algunos autores lo han utilizado para activar mediante programación las dependencias de complementos.Hay otra función,
deactivate_plugin()
que hace algo similar a la inversa ... en realidad es cómo WordPress desactiva los complementos cuando hace clic en "desactivar" o "desactivar".Para desactivar un complemento instalado, solo llame al:
O, para desactivar múltiples complementos a la vez:
Hay un segundo parámetro (el primero es una cadena o una matriz de complementos para deshabilitar) que le permite deshabilitar los complementos sin llamar a los ganchos de desactivación. Por defecto, está configurado en falso, y le recomiendo que lo deje así. A menos que por alguna razón desee evitar la desactivación, entonces haría lo siguiente:
Esto simplemente apagaría el complemento, pero no dispararía nada que el complemento registrara para hacer en la desactivación. Entonces, si el complemento elimina opciones o tablas db cuando está desactivado, querrá hacer esta desactivación "silenciosa" para preservar esa información y usarla en otro lugar.
fuente
Esto es gracias a la brillante respuesta de EAMann anterior, y pensé que podría ser útil también para el póster original ...
Necesitaba una solución para asegurarme de que los usuarios desactivaran mi complemento si cargaban la versión premium (para evitar posibles conflictos). Anteriormente detecté su estado con is_plugin_active y mostré un mensaje de error de administrador para solicitar a los usuarios que lo apaguen. Esto es MUCHO más suave ...
Nota: no parece funcionar en register_activation_hook, pero admin_init funciona de maravilla.
fuente
Aquí está mi solución, crear un complemento que pueda deshabilitar otros complementos de esta manera:
Empuje esto a producción, habilítelo, luego lleve la base de datos a su máquina de desarrollo local.
Fuente
fuente