Conectarse a complementos

12

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

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 ganchos a los complementos de otras personas desde mi propio complemento? ¿Es la única solución real para pedirle al autor que incluya ganchos personalizados para que otros desarrolladores puedan aprovechar su trabajo?

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

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

Ryan Elkins
fuente
1
Gran pregunta!
MikeSchinkel
"¿Es la única solución real para pedirle al autor que incluya ganchos personalizados para que otros desarrolladores puedan aprovechar su trabajo?" En la mayoría de los casos, sí. Hay ciertas situaciones en las que puedes conectarte indirectamente a su complemento, pero no suele ser el caso. Dígales que escriban sus complementos como si estuvieran escribiendo para el núcleo de WordPress: incluya un filtro / acción donde sea que lo necesite.
Viper007Bond
1
Sugerencia: Documente los enlaces que proporciona su complemento para que otros autores de complementos puedan interactuar con él.
Hakre

Respuestas:

6

@ Ryan Elkins:

Supongo que la respuesta depende de cuán importante sea para usted cada caso de uso. En algunos casos, sería algo que necesita rápido y sucio, en otros podría ser un caso de uso más significativo. 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 tanto ascendentes como descendentes mediante el uso de ob_start()/ ob_end_clean()(consulte la respuesta de @Todd Perkins a " Cómo lidiar con una gran salida HTML a través de un código de complemento " para un ejemplo de código).

Para rastrear los ganchos que podría usar, consulte el complemento Instrument Hooks que publiqué ayer para ayudarlo a encontrar los ganchos que potencialmente puede usar.

Envíe un parche con su gancho deseado al desarrollador de complementos

Si su caso de uso es más significativo para usted o la comunidad, le recomiendo que continúe y agregue el gancho que necesita al complemento. Luego pruébelo bien para asegurarse de que realmente aborde su caso de uso, después de lo cual puede enviar un parche al desarrollador del complemento con la esperanza de que él o ella lo aplique. De esta manera, usted lo hace lo más fácil posible dándoles un código probado y puede trabajar usted mismo en el caso de uso para asegurarse de que sea realmente lo que necesita. No puedo decirte con qué frecuencia pensé que necesitaba un cierto gancho solo para encontrarlo después de intentar implementar uno, necesitaba un gancho pero que era diferente de lo que imaginé por primera vez.

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

¿Espero que esto ayude?

PD: Una cosa que encuentro un poco decepcionante y que su pregunta es el porcentaje de complementos que están diseñados solo para usuarios finales, es decir, que no tienen ganchos propios. ¿Imagínese si WordPress fuera diseñado como la mayoría de los complementos? Sería inflexible y una solución muy específica.

¿Quizás las cosas serían diferentes si WordPress tuviera la capacidad de instalar automáticamente complementos de los que dependían otros complementos? Por lo general, tengo que escribir una gran cantidad de la funcionalidad 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 para actualizar el 10% restante.

Realmente deseo que los líderes de la comunidad de WordPress identifiquen una forma de garantizar que los complementos sean recompensados ​​por seguir las mejores prácticas (como agregar ganchos para otros desarrolladores) de la misma manera que las buenas respuestas se recompensan en un sitio de StackExchange.

MikeSchinkel
fuente
2

Por qué sólo tenemos que tratar y para ser mejor plugin de desarrolladores para que todos podamos buen juego juntos?

Para empezar, sí.

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

Esa sería una buena solución.

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

Arlen Beiler
fuente
2

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

Obviamente, está hablando de un sistema similar al que Google fomenta con Android y el sistema Intent, que una aplicación puede publicar acciones que es capaz de realizar en nombre de otras aplicaciones, que luego pueden engancharse en ellas y transferir datos y adelante. Personalmente, creo que es algo a lo que debemos dirigirnos como buenos desarrolladores: utilizamos WordPress porque ya es increíble, lo suficientemente impresionante como para tomar la decisión de usarlo o desarrollar un producto interno similar bastante fácil en la mayoría de los casos. El repositorio de complementos en sí es nuevamente 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 meollo 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 con frecuencia, ya que se empuja demasiado. Ya hay un sistema similar implementado en WordPress, pero rara vez se usa más allá de los ganchos presentes en el código central, que se usan mucho.

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

En términos del complemento de Twitter al que desea conectarse, envíele un correo electrónico al autor, estoy seguro de que estará encantado de agregarlos por usted.

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

Entonces, para responder a su pregunta final de:

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

Si.


Editar: He pensado un poco 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á tratando de ejecutar del complemento estuviera presente?

nadie
fuente
Eso funcionaría, pero ¿y si la función de un complemento diferente tuviera el mismo nombre?
Arlen Beiler
Vaya, tal vez no, porque tienes que saber qué se retuitea y por quién. Verificar la función es una solución en tiempo de ejecución, lo que necesitamos es una solución en tiempo real, una que se ejecuta cuando se llama a la función en cuestión o devuelve datos.
Arlen Beiler
@Arlen: supongamos que debe crear su propia función que verifica si esa función en particular está allí. Se ejecutará después de 'plugins_loaded', y si está allí, establece un valor booleano que habilita las funciones. Depende mucho de que el código no cambie, pero no puedo ver por qué no funcionaría.
nadie
0

definir una función:

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

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

bueltge
fuente
not => now, this own => this. ¿Correcto?
Arlen Beiler
Entiendo cómo agregar ganchos personalizados: la pregunta es cómo desconectar el complemento de otra persona, idealmente de una manera que no requiera la modificación directa de su complemento.
Ryan Elkins el
@Arlen: muchas gracias, perdón por mi mal inglés @Ryan: no es posible, cuando no tengo el complemento enganchado; pero puede verificar si reemplaza la función o clase, cuando el autor lo solicite en su complemento. Pero es posible solicitar complementos activos y enganchar antes en WP como el otro complemento y reemplazar su función.
bueltge