Ich arbeite an einem Plugin, das idealerweise Dinge tun kann, wenn ein Benutzer etwas über ein anderes Plugin tut .
Ich kann diesen Plugins benutzerdefinierte Hooks hinzufügen, aber das funktioniert natürlich nicht, wenn ich mein Plugin verteilen möchte. Gibt es eine gute Möglichkeit, Hooks von meinem eigenen Plugin zu den Plugins anderer Leute hinzuzufügen? Ist die einzige echte Lösung, um den Autor zu bitten, benutzerdefinierte Hooks aufzunehmen, damit andere Entwickler von ihrer Arbeit aufbauen können?
Beispiel: Ich möchte etwas in meinem Plugin tun, wenn jemand einen Artikel retweetet. Wenn es einen benutzerdefinierten Hook in dem beliebten Retweet-Plugin geben würde, an den ich mich anschließen und von dem ich abfeuern könnte, wäre das großartig. Da dies nicht der Fall ist, kann ich das Plugin ändern, um es einzuschließen, aber das funktioniert nur für meine Kopie, und ich möchte nicht versuchen, das weiterzugeben.
Müssen wir nur versuchen, bessere Plugin-Entwickler zu sein, damit wir alle gut zusammen spielen können?
Antworten:
@ Ryan Elkins:
Ich denke, die Antwort hängt davon ab, wie wichtig jeder Anwendungsfall für Sie ist. In einigen Fällen ist es etwas, das Sie schnell und schmutzig benötigen, in anderen Fällen ist es möglicherweise ein wichtigerer Anwendungsfall. Hier sind die beiden Dinge, die mir einfallen:
Suchen Sie in WordPress Core nach alternativen Hooks
Wenn es mal etwas schnelles und schmutziges ist, können Sie andere Downstream-Hooks vom Core verwenden, um das zu ändern, was Sie benötigen, oder sowohl Upstream- als auch Downstream-Hooks mithilfe von
ob_start()
/ob_end_clean()
(siehe Antwort von @Todd Perkins auf " Umgang mit großer HTML-Ausgabe über Plugin-Code "). für ein Codebeispiel.)Um die Hooks aufzuspüren, können Sie das Instrument Hooks-Plugin verwenden, das ich gestern veröffentlicht habe, um die Hooks zu finden, die Sie möglicherweise verwenden können.
Senden Sie einen Patch mit Ihrem gewünschten Hook an den Plugin-Entwickler
Wenn Ihr Anwendungsfall für Sie oder die Community wichtiger ist, würde ich empfehlen, den Hook, den Sie benötigen, zum Plugin hinzuzufügen. Testen Sie es dann gut, um sicherzustellen, dass es wirklich Ihren Anwendungsfall anspricht. Anschließend können Sie dem Plug-in-Entwickler einen Patch in der Hoffnung übermitteln, dass er ihn anwenden wird. Auf diese Weise machen Sie es ihnen so einfach wie möglich, indem Sie ihnen getesteten Code geben, und Sie können den Anwendungsfall selbst durcharbeiten, um sicherzustellen, dass er wirklich das ist, was Sie brauchen. Ich kann Ihnen nicht sagen, wie oft ich dachte, ich brauche einen bestimmten Hook, nur um zu finden, nachdem ich versucht hatte, einen zu implementieren. Ich brauchte einen Hook, der anders war, als ich es mir ursprünglich vorgestellt hatte.
Wenn Sie nicht mit dem Erstellen eines Patches vertraut sind, finden Sie hier einen guten Artikel zum Patchen des WordPress-Kerns, für den das Patchen von Plugins am besten geeignet ist, und für den, für den dies nicht der Fall ist:
Hoffe das hilft?
PS Eine Sache finde ich ein bisschen enttäuschend und dass Ihre Frage Adressen ist der Prozentsatz der Plugins, die nur für Endbenutzer gedacht sind, dh die keine eigenen Hooks haben. Stellen Sie sich vor, WordPress wäre wie die meisten Plugins gestaltet? Es wäre unflexibel und eine sehr Nischenlösung.
Vielleicht wäre es anders, wenn WordPress die Möglichkeit hätte, Plugins automatisch zu installieren, von denen andere Plugins abhängen? In der Regel muss ich einen Großteil der Funktionen, die ich benötige, von Grund auf neu schreiben, da die Clients bestimmte Anforderungen und die verfügbaren Plugins erfüllen möchten, während 90% nicht die Flexibilität bieten, die verbleibenden 10% zu aktualisieren.
Ich wünsche mir wirklich, dass diejenigen, die die WordPress-Community anführen, einen Weg finden, um sicherzustellen, dass Plugins für das Befolgen von Best Practices (wie das Hinzufügen von Hooks für andere Entwickler) belohnt werden, ähnlich wie gute Antworten auf einer StackExchange-Site belohnt werden.
quelle
Für den Anfang ja.
Das wäre eine gute Lösung.
Sie können auch das andere Plugin kopieren und einfach Änderungen hinzufügen, was jedoch umständlicher wäre.
quelle
Ich denke, Sie beantworten Ihre Frage in der Frage, so dass es etwas rhetorisch wird.
Offensichtlich handelt es sich um ein ähnliches System wie das von Google mit Android und dem Intent-System. Eine Anwendung kann Aktionen veröffentlichen, die sie für andere Anwendungen ausführen kann, die sich dann in sie einhängen und Daten zurückgeben und her. Persönlich denke ich, dass es etwas ist, das wir als gute Entwickler anstreben müssen - wir verwenden WordPress, weil es bereits großartig ist, großartig genug, um die Entscheidung zu treffen, ob wir es verwenden oder ein ähnliches internes Produkt in den meisten Fällen ziemlich einfach entwickeln. Das Plugin-Repository selbst ist wieder dasselbe, hauptsächlich für Endbenutzer und Entwickler. Warum ein Twitter-Plugin entwickeln, wenn es ein perfektes gibt?
Das gleiche "Warum Duplikate entwickeln" steht hier im Mittelpunkt Ihrer Frage. Das Android Intent-System ermöglicht es Anwendungen, bereits erstellte Funktionen zu nutzen und Daten zwischen ihnen zu übertragen. Dies ist beliebt und wird häufig verwendet, da es so stark ausgelastet ist. Es gibt ein ähnliches System, das bereits in WordPress implementiert ist, das jedoch nur sehr selten über die häufig verwendeten Hooks im Kerncode hinaus verwendet wird.
Es wäre für die Community von Vorteil, wenn mehr Hooks in benutzerdefinierten Plugins vorhanden wären, aber wie Sie sagen, gibt es keine einfache Möglichkeit, Hooks hinzuzufügen, wenn / wo Sie sie benötigen.
In Bezug auf das Twitter-Plugin, in das Sie sich einbinden möchten, senden Sie dem Autor eine E-Mail. Ich bin sicher, er würde diese gerne für Sie hinzufügen.
Wenn es einen Ort gibt, von dem Sie glauben, dass er ein guter Ort ist, um einen Haken in Ihr Plugin zu setzen, tun Sie es und dokumentieren Sie es gut. Wenn mehr Leute anfangen, Hooks in Plugins zu stecken, oder es einen allgemeinen Vorstoß dazu gibt, wird es irgendwann passieren.
Also, um deine letzte Frage zu beantworten:
Ja.
Bearbeiten: Ich habe etwas mehr über die eigentliche Frage nachgedacht und über die beste Methode zum Implementieren von Hooks. Können Sie keine Aktion hinzufügen, die ausgeführt wird, wenn die bestimmte Funktion, die Sie für das Plugin ausführen möchten, vorhanden ist?
quelle
definiere eine Funktion:
jetzt kannst du diesen haken anhaken:
add_action('my_footer', 'example_function', 1);
# weitere informationen siehe auf meinem post .quelle