Estoy creando un complemento que agrega funcionalidad adicional a un complemento principal. Idealmente, en la pantalla de administración de complementos, el enlace "activar" debería deshabilitarse y debería agregarse una nota en línea que le diga al usuario que instale y active el complemento principal primero antes de que pueda usar el complemento actual.
plugin-development
kosinix
fuente
fuente
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Respuestas:
Gracias por la respuesta chicos. Aunque ambas respuestas me pusieron en el camino correcto, ninguna salió de la caja. Así que estoy compartiendo mis soluciones a continuación.
Método 1 - Usando register_activation_hook:
Cree el complemento principal en plugins / parent-plugin / parent-plugin.php:
Cree el complemento infantil en plugins / child-plugin / child-plugin.php:
Tenga en cuenta que no estoy usando
deactivate_plugins( $plugin );
ya que por alguna razón no funciona. Entonces utilicé wp_die para cancelar la redirección de activación e informar al usuario.Ventaja:
Desventajas
Método 2: uso de admin_init y admin_notices
Cree el complemento principal en plugins / parent-plugin / parent-plugin.php:
Cree el complemento infantil en plugins / child-plugin / child-plugin.php:
Ventaja:
Desventaja:
En cuanto a mi pregunta sobre la desactivación del enlace de activación, podría usar:
Sin embargo, resultó ser muy poco práctico ya que NO hay lugar para poner este código. No pude ponerlo en el complemento principal ya que el complemento principal debe estar activo para que se ejecute este código. Ciertamente no pertenece al plugin secundario o functions.php. Así que estoy desechando esta idea.
fuente
Pruebe esto, está comentado, por lo que debería ayudarlo a comprenderlo.
Si esto arroja un error, también puede verificar la 'opción' de 'myplugin' y configurarlo como falso o no activado.
fuente
Ambas soluciones sugeridas tienen fallas.
Método 1: Como se mencionó, la pantalla wp_die () TODAVÍA aparecerá cuando el complemento principal y el complemento secundario se activen al mismo tiempo usando las casillas de verificación en la pantalla de administración de complementos.
Método 2: en algunos casos de uso no es bueno ya que 'admin_init' se ejecuta mucho después de 'plugins_loaded' ( https://codex.wordpress.org/Plugin_API/Action_Reference ), y después del enlace de desinstalación ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Entonces, por ejemplo, si queremos que el complemento ejecute algún código en la desinstalación, ya sea que el complemento principal esté activo o no, este enfoque NO funcionará.
Solución:
En primer lugar, debemos agregar el siguiente código al final del archivo PHP principal del complemento principal:
Esto enviará un evento / señal a todos los suscriptores, indicando que se cargó el complemento principal.
Entonces, la clase del complemento debería tener el siguiente aspecto:
Espero eso ayude :)
fuente
Creo que necesitas la activación del complemento TGM .
fuente