Collegarsi ai plugin


12

Sto lavorando a un plug-in che sarebbe idealmente in grado di fare le cose quando un utente fa qualcosa attraverso un plug-in diverso .

Posso aggiungere hook personalizzati in quei plugin, ma ovviamente questo non funzionerebbe bene per quando voglio distribuire il mio plugin. C'è un buon modo per aggiungere hook ai plugin di altre persone dal mio plugin? È l'unica vera soluzione per chiedere all'autore di includere hook personalizzati in modo che altri sviluppatori possano sfruttare il proprio lavoro?

Esempio: voglio fare qualcosa nel mio plugin quando qualcuno ritwittano un articolo. Se ci fosse un gancio personalizzato in qualunque sia il popolare plug-in di retweet su cui potrei collegarmi e sparare, sarebbe fantastico. Non esiste, quindi posso modificare il loro plugin per includerlo, ma funziona solo per la mia copia e non voglio provare a ridistribuirlo.

Dobbiamo solo provare a essere sviluppatori di plugin migliori in modo da poter giocare tutti bene insieme?


1
Ottima domanda!
MikeSchinkel,

"È l'unica vera soluzione per chiedere all'autore di includere hook personalizzati in modo che altri sviluppatori possano sfruttare il proprio lavoro?" Nella maggior parte dei casi, sì. Ci sono alcune situazioni in cui puoi riuscire ad agganciare il loro plugin indirettamente, ma di solito non è così. Di 'loro di scrivere i loro plugin come se stessero scrivendo per il core di WordPress - includi un filtro / azione ovunque uno possa averne bisogno.
Viper007Bond

1
Suggerimento: documenta gli hook forniti dal tuo plugin in modo che altri autori di plugin possano interagire con esso.
Hacre,

Risposte:


6

@Ryan Elkins:

Immagino che la risposta dipenda da quanto è importante ogni caso d'uso per te. In alcuni casi sarebbe qualcosa di cui hai bisogno veloce e sporco, in altri potrebbe essere un caso d'uso più significativo. Ecco le due cose che mi vengono in mente:

Cerca hook alternativi in ​​WordPress Core

Se a volte è qualcosa di veloce e sporco, puoi usare altri hook downstream dal core per modificare ciò di cui hai bisogno, oppure hook upstream e downstream tramite l'uso di ob_start()/ ob_end_clean()(vedi la risposta di @Todd Perkins a " Gestire grandi output HTML tramite codice plugin " per un esempio di codice.)

Per rintracciare gli hook che puoi utilizzare, controlla il plug-in Instrument Hooks che ho pubblicato ieri per aiutarti a trovare gli hook che puoi usare potenzialmente.

Invia una patch con il tuo gancio desiderato allo sviluppatore dei plug-in

Se il tuo caso d'uso è più significativo per te o per la community, ti consiglio di andare avanti e aggiungere l'hook di cui hai bisogno al plugin. Quindi testalo bene per assicurarti che risolva davvero il tuo caso d'uso dopo il quale puoi inviare una patch allo sviluppatore del plug-in nella speranza che lo applichi. In questo modo rendi il più semplice possibile su di loro dando loro il codice testato e riesci a lavorare da solo attraverso il caso d'uso per assicurarti che sia davvero ciò di cui hai bisogno. Non posso dirti quante volte pensavo di aver bisogno di un certo hook solo per trovarlo dopo aver provato a implementarne uno che mi serviva un hook ma che era diverso da come immaginavo inizialmente.

Se non hai familiarità con la creazione di una patch, ecco un buon articolo sulla correzione del core di WordPress per la maggior parte dei quali si applica ai plug-in per la correzione e per ciò che non lo sarà, spero che sia ovvio cosa fare:

Spero che sia di aiuto?

PS Una cosa che trovo un po 'deludente e che la tua domanda riguarda la percentuale di plugin progettati solo per gli utenti finali, cioè che non hanno hook propri. Immagina se WordPress fosse progettato come la maggior parte dei plugin? Sarebbe inflessibile e una soluzione di nicchia.

Forse le cose sarebbero diverse se WordPress avesse la possibilità di installare automaticamente plugin da cui dipendevano altri plugin? Dato che in genere devo scrivere molte funzionalità di cui ho bisogno da zero perché i clienti vogliono le cose in un certo modo e i plugin disponibili, mentre il 90% non mi consente la flessibilità di aggiornare il restante 10%.

Vorrei davvero che coloro che guidavano la community di WordPress identificassero un modo per garantire che i plug-in venissero premiati per aver seguito le migliori pratiche (come l'aggiunta di hook per altri sviluppatori) proprio come le buone risposte sono ricompensate su un sito StackExchange.


2

Dobbiamo solo bisogno di provare e di essere meglio gli sviluppatori di plugin in modo che tutti noi possiamo bello giocare insieme?

Per cominciare, sì.

È l'unica vera soluzione per chiedere all'autore di includere hook personalizzati in modo che altri sviluppatori possano sfruttare il proprio lavoro?

Sarebbe una buona soluzione.

Puoi anche copiare l'altro plug-in e aggiungere semplicemente eventuali modifiche, anche se sarebbe più seccante.


2

Penso che tu risponda alla tua domanda nella domanda, in modo che diventi un po 'retorica.

Ovviamente stai parlando di un sistema simile a quello che Google incoraggia con Android e il sistema Intent, che un'applicazione può pubblicare azioni che è in grado di fare per conto di altre applicazioni, che possono quindi agganciarle e restituire dati e via. Personalmente penso che sia qualcosa a cui dobbiamo andare come buoni sviluppatori - usiamo WordPress perché è già fantastico, abbastanza fantastico da prendere la decisione se usarlo o sviluppare un prodotto interno simile abbastanza facile nella maggior parte dei casi. Il repository di plugin stesso è di nuovo la stessa cosa, principalmente come utente finale + sviluppatore - perché sviluppare un plug-in di Twitter quando ce n'è uno perfettamente funzionante.

Lo stesso "perché sviluppare duplicati" è al centro della tua domanda qui. Il sistema Android Intent consente alle applicazioni di utilizzare funzioni già create e di passare i dati tra di loro, e questo è popolare e spesso utilizzato, perché è spinto così pesantemente. Esiste un sistema simile già implementato in WordPress, ma molto raramente viene utilizzato oltre gli hook presenti nel codice principale, che sono utilizzati molto.

Sarebbe vantaggioso per la comunità se fossero presenti più hook nei plug-in personalizzati, ma come dici tu, non c'è modo semplice per aggiungere hook quando / dove ne hai bisogno.

In termini di plug-in di Twitter che desideri collegare, invia all'autore un'email, sono sicuro che sarebbe felice di aggiungerli per te.

Se c'è un posto che pensi possa essere un buon posto per mettere un gancio nel tuo plugin, fallo e documentalo bene. Se più persone iniziano a inserire hook nei plugin, o c'è una spinta generale verso di farlo, alla fine accadrà.

Quindi, per rispondere alla tua domanda finale di:

Dobbiamo solo provare a essere sviluppatori di plugin migliori in modo da poter giocare tutti bene insieme?

Sì.


Modifica: ho pensato ancora un po 'alla domanda reale e al modo migliore di implementare gli hook, non potresti aggiungere un'azione che potrebbe essere eseguita se fosse presente la particolare funzione che stai cercando di eseguire del plugin?


Funzionerebbe, ma cosa succederebbe se la funzione di un altro plugin avesse lo stesso nome?
Arlen Beiler,

Oops, forse no, perché devi sapere cosa viene ritwittato e da chi. Il controllo della funzione è una soluzione di runtime, ciò di cui abbiamo bisogno è una soluzione in tempo reale, che viene eseguita quando viene chiamata la funzione in questione o restituisce dati.
Arlen Beiler,

@Arlen - Supponi che tu debba creare la tua funzione che controlla se la particolare funzione è presente. Sarebbe eseguito dopo 'plugins_loaded', e se è lì imposta un valore booleano che abilita le funzionalità. Dipende molto dal fatto che il codice non cambi, ma non riesco a capire perché non funzioni?
nessuno

0

definire una funzione:

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

ora puoi agganciare questo hook: add_action('my_footer', 'example_function', 1);# maggiori informazioni vedi sul mio post .


non => ora, questo proprio => questo. Corretta?
Arlen Beiler,

Capisco come aggiungere hook personalizzati - la domanda è come agganciare il plug-in di qualcun altro, idealmente in un modo che non richiede la modifica diretta del loro plug-in.
Ryan Elkins,

@Arlen: molte grazie, scusatemi per il mio cattivo inglese @Ryan: non è possibile, quando non si ha il plugin un hook; ma puoi verificare la sostituzione della funzione o della classe, quando l'autore lo richiede nel suo plugin. Ma è possibile richiedere plugin attivi e agganciare in precedenza in WP come l'altro plugin e sostituire la sua funzione.
bueltge
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.