Estou tentando estender a funcionalidade de outro plug-in. Eu preciso obter dados dele em uma matriz para usar de uma maneira diferente do plug-in original. (Nesse caso, plug-ins de categorias e listagens do WPMUDev). Existe algo no Codex? Como posso criar um plug-in que pode usar outras funções de plug-ins? Posso estendê-los e construir as funções dos nós pais? Não tenho certeza se esses plugins estão usando classes ou apenas funções diretas.
Estou apenas tentando obter dados do plug-in em um widget da barra lateral (em um elemento de opção de formulário), mas eventualmente usarei isso para a área de conteúdo também usando códigos de acesso personalizados. Por enquanto, só preciso de um lugar para começar.
Respostas:
Sim, é possível criar um plugin que estenda outro plugin. Aqui estão algumas idéias sobre como você pode fazer isso:
Um plug-in pode configurar sua própria ação e ganchos de filtro (usando as funções
do_action
eapply_filter
) da mesma forma que o núcleo do WordPress. Se o plugin que você está direcionando fizer isso, você poderá usar esses ganchos para alterar a funcionalidade.Se um plug-in usa uma estrutura orientada a objetos, você pode estender as classes e desenvolver o plug-in original.
Você pode ler os dados armazenados no banco de dados pelo plug-in original e usá-lo em seu código.
Você pode chamar qualquer função do plug-in original que desejar, depois de verificar se o plug-in está ativo e carregado (veja abaixo). Esteja ciente de quaisquer efeitos que a função possa ter além do valor retornado.
Você precisará verificar se o plug-in original está ou não ativado. Você poderia usar a
is_plugin_active
função; no entanto, isso funciona apenas nas páginas de administração. Como alternativa, você pode usarfunction_exists
ouclass_exists
para verificar se uma função ou classe específica do plug-in original está disponível ou não, o que indicaria que ele está em execução.Lembre-se de que sempre que o plug-in original é atualizado, você precisa testar seu plug-in com a nova versão para procurar algo novo que possa entrar em conflito com seu plug-in.
fonte