it-swarm-es.com

Enganchando a los plugins

Estoy trabajando en un complemento que idealmente podría hacer cosas cuando un usuario hace algo a través de un diferente plugin.

Puedo agregar ganchos personalizados en esos complementos, pero obviamente esto no funcionaría bien cuando quiero distribuir mi complemento. ¿Hay una buena manera de agregar enlaces a los complementos de otras personas desde mi propio complemento? ¿Es la única solución real que le pide al autor que incluya ganchos personalizados para que otros desarrolladores puedan desarrollar su trabajo?

Ejemplo: quiero hacer algo en mi complemento cuando alguien retweets un artículo. Si hubiera un gancho personalizado en el popular complemento de retweet que podría conectar y disparar, sería genial. No hay, así que puedo modificar su complemento para incluirlo, pero eso solo funciona para mi copia, y no quiero intentar redistribuir eso.

¿Solo tenemos que intentar ser mejores desarrolladores de complementos para que todos podamos jugar a Niza juntos?

12
Ryan Elkins

@Ryan Elkins:

Supongo que la respuesta depende de cuán importante sea cada caso de uso para usted. En algunos casos, sería algo que necesitaría rápido y sucio, en otros podría ser un caso de uso más importante. Aquí están las dos cosas que vienen a la mente:

Busque ganchos alternativos dentro de WordPress Core

Si es algo rápido y sucio, algunas veces puede usar otros ganchos descendentes desde el núcleo para modificar lo que necesita, o ganchos ascendentes y descendentes mediante el uso de ob_start()/ob_end_clean() (vea @Todd Perkins responde a "Tratar con una salida HTML grande a través de un código de complemento"para un ejemplo de código.)

Para rastrear los enganches, puede usar el plugin Instrument Hooks Publiqué ayer para ayudarlo a encontrar los enganches que potencialmente puede usar.

Presente un parche con su gancho deseado al desarrollador de complementos

Si su caso de uso es más importante para usted o para la comunidad, le recomiendo seguir adelante y agregar el enlace que necesita al complemento. Luego, pruébelo bien para asegurarse de que realmente aborda su caso de uso, después de lo cual puede enviar un parche al desarrollador del complemento con la esperanza de que lo aplique. De esta manera, podrá hacerlo lo más fácil posible dándoles un código probado y podrá resolver el caso usted mismo para asegurarse de que realmente es lo que necesita. No puedo decirle con qué frecuencia pensé que necesitaba un determinado gancho solo para encontrarlo. Después de intentar implementar uno, necesitaba un gancho, pero que era diferente al que imaginé.

Si no está familiarizado con la creación de un parche, aquí hay un buen artículo sobre parches del núcleo de WordPress para el que más se aplica a los parches de parches y para el que no lo es, será obvio qué hacer:

¿Espero que esto ayude?

PD Una cosa que me parece un poco decepcionante y que su pregunta responde es el porcentaje de complementos que están diseñados solo para usuarios finales, es decir, que no tienen ningún gancho propio. ¿Imagina si WordPress fue diseñado como la mayoría de los complementos? Sería inflexible y una solución muy especializada.

¿Tal vez las cosas serían diferentes si WordPress tuviera la capacidad de instalar automáticamente los complementos de los que dependían otros complementos? Tal como es, normalmente tengo que escribir muchas de las funciones que necesito desde cero porque los clientes quieren las cosas de cierta manera y los complementos disponibles, mientras que el 90% no me permite la flexibilidad de actualizar el 10% restante.

Realmente deseo que aquellos que lideran la comunidad de WordPress identifiquen una manera de asegurar que los complementos sean recompensados ​​por seguir las mejores prácticas (como agregar ganchos para otros desarrolladores) al igual que las buenas respuestas se recompensan en un sitio de StackExchange.

6
MikeSchinkel

Solo tenemos que intentarlo y  para ser mejores desarrolladores de complementos para que todos podamos jugar Niza juntos?

Para empezar, sí.

¿Es la única solución real que le pide al autor que incluya ganchos personalizados para que otros desarrolladores puedan desarrollar su trabajo?

Esa sería una buena solución.

También puedes copiar el otro complemento y simplemente agregar cualquier cambio, aunque eso sería más complicado.

2
Arlen Beiler

Creo que respondes tu pregunta en la pregunta, de modo que se vuelve algo retórica.

Obviamente, está hablando de un sistema similar al que Google recomienda con Android y el sistema Intent, que una aplicación puede publicar acciones que puede realizar en nombre de otras aplicaciones, que luego pueden conectarse a ellas y pasar datos y adelante. Personalmente creo que es algo a lo que debemos dirigirnos como buenos desarrolladores: usamos WordPress porque ya es increíble, lo suficientemente impresionante como para decidir si usarlo o desarrollar un producto similar similar en la mayoría de los casos. El repositorio de complementos en sí mismo es de nuevo lo mismo, principalmente como usuario final + desarrollador. ¿Por qué desarrollar un complemento de Twitter cuando hay uno perfectamente bueno?.

El mismo 'por qué desarrollar duplicados' está en el punto crucial de su pregunta aquí. El sistema Android Intent permite que las aplicaciones utilicen funciones ya creadas, y pasen datos entre ellas, y esto es popular y se usa a menudo, porque se empuja mucho. Ya existe un sistema similar implementado en WordPress, pero muy raramente se usa más allá de los ganchos presentes en el código del núcleo, que se usan mucho.

Beneficiaría a la comunidad si hubiera más ganchos en complementos personalizados, pero como usted dice, no hay una manera fácil de agregar ganchos cuando/donde los necesite.

En cuanto al complemento de Twitter al que desea conectarse, envíe un correo electrónico al autor, estoy seguro de que estará encantado de agregarlos para usted.

Si hay un lugar que crees que sería un buen lugar para poner un gancho en tu complemento, hazlo y documenta bien. Si más personas comienzan a poner ganchos en los complementos, o si hay un impulso general para hacerlo, eventualmente sucederá.

Así que para responder a tu pregunta final de:

¿Solo tenemos que intentar ser mejores desarrolladores de complementos para que todos podamos jugar a Niza juntos?

Sí.


Edición: He pensado algo más sobre la pregunta real y la mejor manera de implementar ganchos, ¿no podría agregar una acción que se ejecutaría si la función particular que está intentando ejecutar del complemento estuviera presente?

2
nobody

definir una función:

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

ahora puedes enganchar a este gancho: add_action('my_footer', 'example_function', 1); # más información ver en mi publicación .

0
bueltge