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?
Respuestas:
@ 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.
fuente
Para empezar, sí.
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.
fuente
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:
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?
fuente
definir una función:
ahora puedes conectar este gancho:
add_action('my_footer', 'example_function', 1);
# más información ver en mi publicación .fuente