web-development-kb-pt.site

Conectando-se a plugins

Eu estou trabalhando em um plugin que seria idealmente 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 para pedir ao autor para incluir ganchos personalizados para que outros desenvolvedores possam construir fora de 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 conectar e disparar, seria ótimo. Não há, 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 nós possamos tocar o Nice juntos?

12
Ryan Elkins

@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 é algo rápido e sujo algumas vezes você pode usar outros ganchos a partir do núcleo para modificar o que você precisa, ou ambos os ganchos a montante e a jusante através do uso de ob_start()/ob_end_clean() (veja @Todd Perkins answer to "Lidando com grande saída HTML via código do plugin"para um exemplo de código.)

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

Envie um Patch com o seu Gancho Desejado para o Plugin Developer

Se o seu caso de uso for mais significativo para você ou para a comunidade, recomendo ir em frente e adicionar o gancho que você precisa 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 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, que mais se aplica a plugins de patch e para aqueles que não espera ser óbvio o que fazer:

Espero que isto ajude?

P.S. Uma coisa que acho um pouco decepcionante e que seus endereços de pergunta é a porcentagem de plugins que são projetados apenas para usuários finais, ou seja, que não têm 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 seriam 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 desejo que aqueles que lideram a comunidade WordPress identifiquem uma maneira de garantir que os plugins sejam 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.

6
MikeSchinkel

Nós só precisamos tentar e  para ser melhores desenvolvedores de plugins para que todos nós possamos tocar o Nice juntos?

Para começar, sim.

É a única solução real para pedir ao autor para incluir ganchos personalizados para que outros desenvolvedores possam construir fora de 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.

2
Arlen Beiler

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 semelhante 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 se conectar a eles e passar dados de volta. adiante. 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 de 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 plugins 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 ao autor, tenho certeza de que ele ficaria feliz em adicioná-los 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, para responder a sua pergunta final de:

Precisamos apenas tentar ser melhores desenvolvedores de plugins para que todos nós possamos tocar o Nice juntos?

Sim.


Edit: Eu pensei um pouco mais sobre a questão real ea melhor maneira de implementar ganchos, você não poderia adicionar uma ação que seria executado se a função específica que você está tentando executar do plugin estava presente?

2
nobody

definir uma função:

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

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

0
bueltge