Estou usando o WordPress 3.0.5 e testei com 3.1rc4. No arquivo PHP principal do meu plug-in, quando tento chamar is_plugin_active, recebo Call to undefined function is_plugin_active()
. Eu posso chamar add_action e add_filter. O que devo verificar / alterar para corrigir isso?
Isso está acontecendo dentro do administrador na página Plugins. No topo do meu arquivo principal de plug-in que tenho, if (function_exists('is_plugin_active')) {
que sempre retorna false.
Também não consigo ver as funções do meu arquivo principal de plug-in em outros plug-ins (se isso ajudar).
function_exists('is_plugin_active')
é falso quando chamado do arquivo principal do plug-in se estiver fora de um método, mas é verdadeiro quando chamado dentro do método chamado para aactivated_plugin
ação.Respostas:
Isso ocorre porque o arquivo no qual is_plugin_active () está definido -
wp-admin/includes/plugin.php
- é carregado apenas no administrador, após o carregamento do plug-in.Portanto, você só pode chamá-lo depois que o 'admin_init' for acionado:
fonte
Você pode chamar is_plugin_active () nos modelos e também nas páginas dos usuários, o que pode ser útil para plugins relacionados (por exemplo, é necessário o plug-in 'xyz' para operar meu novo plug-in). Você precisa incluir manualmente o arquivo plugin.php, conforme observado nos documentos is_plugin_active () no Codex.
Aqui está um exemplo funcional que eu uso nos meus pacotes de complementos premium para garantir que o plug-in de base livre esteja ativo antes de chamar um objeto de complemento. Requer que certos ganchos e filtros estejam disponíveis no plug-in de base ou ele trava.
Como um aparte, se você estiver tendo problemas com o is_plugin_active () de dentro de um login de administrador ativo, é provável que esteja testando antes que o admin_init seja acionado. O admin_menu é acionado antes do admin_init e a realização de testes no admin_menu "já havia me mordido". O nome "admin_init", que me parece contra-intuitivo, pois o admin_menu já está em execução. Eu penso no init como "a primeira coisa a ser executada" ... talvez admin_kinda_init () seja melhor. :)
fonte
include_once(ABSPATH.'wp-admin/includes/plugin.php');
fez o truque para mim. Obrigado!Uma solução rápida e suja seria duplicar a função manualmente:
Como é bastante curto, não deve ser muito difícil implementar em seu próprio código como solução alternativa.
fonte
Simples e fácil. Retirado do WP
e, em seguida, quaisquer instâncias de
obtenha a verificação da função. Portanto, não há mais erros.
fonte
requireonce
provavelmente não precisará verificar a função ...?Eu preferi a resposta de Tom Auger com como definir sua própria função is_plugin_active em vez de incluir o plugin.php. No entanto, o uso do mesmo nome de função causou uma falha na minha área de administração. O uso de um nome de função diferente resolveu:
fonte
Você está usando
is_plugin_active
dentro do administrador ou do front-end? Tenho certeza de queis_plugin_active
é apenas uma função administrativa encontrada em wp-admin / includes / plugin.php.Além disso, o seu arquivo principal de plug-in faz uso do Wordpress File Header ? Seu plug-in está sendo incluído após o carregamento do arquivo plugin.php acima?
fonte
Para depurar plugins ativos:
Para verificar um plugin específico:
A ação é chamada "
active_plugins
" IIRC.fonte
Nenhuma dessas soluções funcionou para mim, mas isso funcionou:
Encontrei esta solução em codebangers.com
fonte