Conectando-se a plugins

12

Eu estou trabalhando em um plugin que idealmente seria capaz de fazer coisas quando um usuário faz algo através de um diferente plugin.

Eu posso adicionar ganchos personalizados nesses plugins, mas obviamente isso não funcionaria bem quando eu quiser distribuir meu plugin. Existe uma boa maneira de adicionar ganchos aos plugins de outras pessoas a partir do meu próprio plugin? A única solução real é pedir ao autor que inclua ganchos personalizados para que outros desenvolvedores possam construir seu trabalho?

Exemplo: eu quero fazer algo no meu plugin quando alguém retweets um artigo. Se houvesse um gancho personalizado em qualquer plug-in retweet popular que eu pudesse ligar e disparar, seria ótimo. Não existe, então eu posso modificar o seu plugin para incluí-lo, mas isso só funciona para a minha cópia, e eu não quero tentar redistribuir isso.

Precisamos apenas tentar ser melhores desenvolvedores de plugins para que todos possamos tocar juntos?

    
por Ryan Elkins 14.08.2010 / 21:10

4 respostas

6

@Ryan Elkins:

Eu acho que a resposta depende de como importar cada caso de uso para você. Em alguns casos, seria algo que você precisa ser rápido e sujo, em outros, pode ser um caso de uso mais significativo. Aqui estão as duas coisas que vêm à mente:

Procure Ganchos Alternativos no Núcleo do WordPress

Se for algo rápido e sujo algumas vezes, é possível usar outros ganchos de recebimento de dados do núcleo para modificar o que você precisa, ou ambos os ganchos de envio e recebimento de dados usando ob_start() / ob_end_clean() (consulte @Todd Resposta da Perkins para" Lidando com grande saída HTML via código de plug-in " para um exemplo de código.)

Para rastrear os ganchos que você pode usar, verifique o plug-in de Ganchos de Instrumento Eu postei ontem para ajudá-lo a encontrar os ganchos que você pode usar potencialmente.

Envie um patch com seu gancho desejado para o desenvolvedor de plug-ins

Se o seu caso de uso for mais significativo para você ou para a comunidade, recomendo ir em frente e adicionar o gancho necessário ao plug-in. Em seguida, teste-o bem para garantir que ele realmente atenda ao seu caso de uso, após o qual você pode enviar um patch para o desenvolvedor do plug-in na esperança de que ele o aplique. Dessa forma, você torna o processo o mais fácil possível, dando a eles um código testado e você pode trabalhar com o próprio caso de uso para garantir que ele é realmente o que você precisa. Eu não posso te dizer quantas vezes eu pensei que precisava de um certo gancho só para descobrir depois de tentar implementar um que eu precisava de um gancho, mas um que era diferente do que eu imaginava.

Se você não está familiarizado com a criação de um patch, aqui está um bom artigo sobre como remendar o núcleo do WordPress, o que se aplica mais a plugins de patch e para o que não será óbvio o que fazer:

Espero que isso ajude?

P.S. Uma coisa que acho um pouco decepcionante e que os endereços das suas perguntas são a porcentagem de plugins projetados apenas para usuários finais, ou seja, que não possuem ganchos próprios. Imagine se o WordPress fosse projetado como a maioria dos plugins? Seria inflexível e uma solução muito nicho.

Talvez as coisas fossem diferentes se o WordPress tivesse a capacidade de instalar plugins de que outros plugins dependessem? Como normalmente eu tenho que escrever muito da funcionalidade que preciso do zero porque os clientes querem as coisas de uma certa maneira e os plugins disponíveis, enquanto 90% não me permitem a flexibilidade de atualizar os 10% restantes.

Eu realmente gostaria que os líderes da comunidade WordPress identificassem uma maneira de garantir que os plugins fossem recompensados por seguir as melhores práticas (como adicionar ganchos para outros desenvolvedores), assim como boas respostas são recompensadas em um site do StackExchange.

    
por MikeSchinkel 14.08.2010 / 23:45
2
  

Precisamos apenas tentar e para ser melhores desenvolvedores de plug-ins para que todos possamos tocar juntos?

Para começar, sim.

  

A única solução real é pedir ao autor que inclua ganchos personalizados para que outros desenvolvedores possam construir seu trabalho?

Isso seria uma boa solução.

Você também pode copiar o outro plug-in e apenas adicionar alterações, embora isso seja mais trabalhoso.

    
por Arlen Beiler 14.08.2010 / 21:37
2

Acho que você responde à sua pergunta na pergunta, de modo que ela se torna um tanto retórica.

Obviamente, você está falando de um sistema similar ao que o Google incentiva com o Android e o sistema Intent, que um aplicativo pode publicar ações que ele é capaz de fazer em nome de outros aplicativos, que podem ser acessados e passados por eles. dados para frente e para trás. Pessoalmente eu acho que é algo que precisamos seguir como bons desenvolvedores - nós usamos o WordPress porque já é incrível, incrível o suficiente para tomar a decisão de usá-lo ou desenvolver um produto interno similar na maioria dos casos. O repositório de plug-ins em si é novamente a mesma coisa, principalmente como usuário final + desenvolvedor - por que desenvolver um plugin do Twitter quando houver um perfeitamente bom.

O mesmo 'por que desenvolver duplicatas' está no cerne da sua pergunta aqui. O sistema Android Intent permite que os aplicativos utilizem funções já criadas e passem dados entre elas, e isso é popular e usado com frequência, porque é pressionado de forma tão intensa. Existe um sistema semelhante já implementado no WordPress, mas é muito raramente usado além dos ganchos presentes no código principal, que são muito usados.

Isso beneficiaria a comunidade se mais ganchos em plug-ins personalizados estivessem presentes, mas, como você diz, não há uma maneira fácil de adicionar ganchos quando / onde você precisar deles.

Em termos do plug-in do Twitter no qual você deseja se conectar, envie um e-mail para o autor, tenho certeza de que ele ficaria feliz em adicioná-lo para você.

Se há um lugar que você acha que seria um bom lugar para colocar um gancho em seu plugin, faça-o e documente-o bem. Se mais pessoas começarem a colocar ganchos em plugins, ou se houver um impulso geral para isso, isso acontecerá eventualmente.

Então, responda à sua pergunta final:

  

Precisamos apenas tentar ser melhores desenvolvedores de plugins para que todos possamos tocar juntos?

Sim.

Edit: Pensei um pouco mais sobre a questão atual e a melhor maneira de implementar ganchos, você não poderia adicionar uma ação que seria executada se a função específica que você está tentando executar do plugin estivesse presente?

    
por nobody 14.08.2010 / 21:44
0

defina uma função:

function my_footer() {
    do_action('my_footer');
}

agora você pode ligar este gancho: add_action('my_footer', 'example_function', 1); # mais informações veja em meu post .

    
por bueltge 14.08.2010 / 21:35

Tags