Estou construindo um plugin que adiciona funcionalidade extra a um plugin principal. Idealmente, na tela de administração de plug-ins, o link "ativar" deve ser desativado e uma nota em linha deve ser adicionada informando ao usuário para instalar e ativar o plug-in principal antes de poder usar o plug-in atual.
plugin-development
Kosinix
fonte
fonte
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Respostas:
Obrigado pelas respostas pessoal. Embora ambas as respostas me colocassem no caminho certo, nenhuma funcionou imediatamente. Então, estou compartilhando minhas soluções abaixo.
Método 1 - Usando register_activation_hook:
Crie o plugin pai em plugins / parent-plugin / parent-plugin.php:
Crie o Child Plugin em plugins / child-plugin / child-plugin.php:
Observe que não estou usando
deactivate_plugins( $plugin );
, por algum motivo, ele não funciona. Então usei wp_die para cancelar o redirecionamento de ativação e informar o usuário.Vantagem:
Desvantagens:
Método 2 - Usando admin_init e admin_notices
Crie o plugin pai em plugins / parent-plugin / parent-plugin.php:
Crie o Child Plugin em plugins / child-plugin / child-plugin.php:
Vantagem:
Desvantagem:
Quanto à minha pergunta sobre a desativação do link de ativação, eu poderia usar:
No entanto, acabou sendo altamente impraticável, pois não há lugar para colocar esse código. Não pude colocá-lo no plug-in pai, pois o plug-in pai deve estar ativo para que esse código seja executado. Certamente não pertence ao plugin filho ou functions.php. Então, eu estou descartando essa ideia.
fonte
Experimente, comentou, para ajudar a entender.
Se isso gerar um erro, você também poderá verificar a 'opção' de 'myplugin' e configurá-la como falsa ou não ativada.
fonte
Ambas as soluções sugeridas têm falhas.
Método 1: Como mencionado, a tela wp_die () AINDA aparecerá quando o plug-in pai e o plug-in filho forem ativados ao mesmo tempo usando as caixas de seleção na tela de administração dos plug-ins.
Método 2: Em alguns casos de uso, não é bom, pois 'admin_init' é executado após 'plugins_loaded' ( https://codex.wordpress.org/Plugin_API/Action_Reference ) e após o gancho de desinstalação ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Por exemplo, se queremos que o complemento execute algum código na desinstalação, independentemente de o plug-in pai estar ativo ou não, essa abordagem NÃO funcionará.
Solução:
Primeiro, precisamos anexar o seguinte código ao final do arquivo PHP principal do plugin pai:
Isso enviará um evento / sinal para todos os assinantes, informando que o plug-in principal foi carregado.
Em seguida, a classe do complemento deve ter a seguinte aparência:
Espero que ajude :)
fonte
Eu acho que você precisa da ativação do TGM Plugin .
fonte