Angenommen, ich möchte der "neuen" Revisions-Benutzeroberfläche post_meta hinzufügen. Ich speichere einige Meta nur für Revisionen und möchte sie auf diesem Bildschirm anzeigen.
Normalerweise würde wp-admin/revisions.php
ich nach ein paar Hooks suchen und Code weg. Die Überarbeitungsseite ist jedoch vollständig mit Backbone erstellt . Ich kenne Backbone nicht (total lernbereit). Ich kann jedoch nichts darüber finden, wie vorhandene Admin-Backbone-Ansichten in WordPress geändert werden können.
Hat jemand diese Schnittstelle erfolgreich geändert und kann ein Beispiel dafür geben, wie es gemacht werden kann?
Antworten:
Leider gibt es keine standardisierte Best Practice von WordPress zum Einbinden in Backbone-Vorlagen. Es wurden Pläne vorgeschlagen , die bekannte Filter- und Aktions-API in WordPress auf Javascript zu bringen, aber es gibt einen Mangel an Traktion in dieser Bewegung. Carl Danley hat eine Bibliothek erstellt, die genau das tut. Dies ist hilfreich, wenn Sie versuchen, Code auf die kleinste Art und Weise zu erstellen, damit alle das tun, was Sie tun möchten.
Grundsätzlich versuchen Sie zu überschreiben, was in
revisions.view.Meta
der Mikrotemplate vor sich geht.Es gibt keine einfache Möglichkeit, das Mikrotemplate-Markup selbst zu überschreiben. Was ich vorschlagen würde, ist das Überschreiben der
.template()
Methode eines Konstruktors, der sich vonrevisions.view.Meta
, dem Seinrevisions.view.MetaFrom
undrevisions.view.MetaTo
. Um dies zu tun, hier ein paar Boilerplate:Und um das zu erklären. Wir schließen uns der Fußzeile der Revisionsadministrationsseite an, sodass wir sicher sind, dass die Konstruktoren
revisions.view.MetaFrom
undrevisions.view.MetaTo
definiert wurden , jedoch bevor der Bootstrapper des Revisionsmoduls ausgelöst wurde . Dies ist wichtig, da wir die Konstruktoren ändern möchten, bevor sie verwendet werden. Ich habe den Inhalt derrevisions.view.Meta
Mikrotemplate wörtlich in eine überschriebene Version der Vorlage kopiert#tmpl-revisions-meta-override
, aber ich habeYour custom text here
in der Vorlage hinzugefügt, dass es so aussieht, als ob Sie Ihren benutzerdefinierten Text möchten. Dann überschreibe ich dietemplate()
Methode beider Konstruktoren und verwende die ID der modifizierten Mikrotemplate als Referenz.Voila. Nun kommt es darauf an, was Sie mit Ihrem benutzerdefinierten Text tun möchten. Wenn Sie dort Text einfügen möchten, versuchen Sie es. Wenn Sie für diese Revision spezifischen Text ausgeben möchten, sollten Sie die oben genannte Bibliothek von Carl Danley überprüfen und einen Filter-Hook auslösen
data
, damit Sie etwas Spezifisches für die vorliegenden Daten ausgeben können.Ich weiß, das ist verrückt. Aber hier sind wir mit dem Überschreiben von Javascript in WordPress Backbone-Vorlagen. Wir sollten darüber diskutieren, wie wir die Anpassbarkeit, wie Sie sie wünschen, in den Kern einbinden können, aber wir sind nicht, weil es an Interesse / Dynamik mangelt. Fühlen Sie sich frei, bei unseren wöchentlichen WordPress-Kernentwickler-Chats Gespräche zu führen . Ich werde da sein.
quelle
setTimeout
mit einer Verzögerung von 100 ms einstecke, funktioniert es. Ich konnte keine Ereignisse finden,revisions.js
wenn die Vorlage fertig gerendert wurde. Ist eine Verzögerung wahrscheinlich der einzige Weg? (Code hier: gist.github.com/jjeaton/ed4d22245943c2eaa4fa )text
innerhalb des ApplyFilters-Aufrufs ausgegeben und inline in der Vorlage ausgegeben werden können. Sie möchten keine jQuery.text () verwenden, um eine Mikrotemplate zu ändern. Verwenden Sie die Möglichkeit, dass die Vorlage Underscore.js maskiert wird. (Code hier: gist.github.com/ericandrewlewis/3f3f39dc7ebdc4a56681 )