Gibt es eine Möglichkeit, mehrere WYSIWYG-Editoren für einen benutzerdefinierten Beitragstyp zu haben? Wenn ich zum Beispiel ein zweispaltiges Layout hätte, hätte ich gerne einen Editor für eine Spalte und einen anderen für die andere.
custom-post-types
wysiwyg
Paul Sheldrake
quelle
quelle
Antworten:
Angenommen, Ihr benutzerdefinierter Beitragstyp wurde aufgerufen
Properties
, fügen Sie das Feld für Ihren zusätzlichen tinyMCE-Editor hinzu. Verwenden Sie dazu den folgenden Code:wysiwyg-editor-2
ist die ID, auf die die Meta-Box angewendet wird,Second Column
ist der Titel, den die Meta-Box haben wird,second_column_box
ist die Funktion, die den HTML-Code für die Meta-Box ausgibt,properties
ist unser benutzerdefinierter Beitragstyp,normal
ist der Speicherort der Meta-Box undhigh
gibt an, dass es auf der Seite so hoch wie möglich angezeigt werden soll. (Normalerweise unter dem Standard-tinyMCE-Editor).Als grundlegendes Beispiel müssen Sie dann den tinyMCE-Editor an ein Textfeld anhängen. Wir müssen noch unsere
second_column_box
Funktion definieren , die den HTML-Code für die Meta-Box ausgibt. Dies ist also genau der richtige Ort, um dies zu tun:Es gibt einige Probleme, bei denen ich nicht sicher bin, wie ich sie lösen soll. Der tinyMCE-Editor befindet sich in einer Metabox, die möglicherweise nicht ideal ist, und bietet nicht die Möglichkeit, zwischen dem HTML- und dem visuellen Bearbeitungsmodus zu wechseln, sowie die Befehle zum Einfügen von Medien, über die der normale Post-Editor verfügt. Das Umschalten der Modi scheint als eine Funktion definiert zu sein, deren erstes Argument die ID ist, aber es scheint auch im wp-tinymce-Skript codiert zu sein. Es ist möglich, die eingebauten tinyMCE-Funktionen zu verwenden, dies ändert jedoch den Textbereich zwischen dem vollständigen tinyMCE und einem Basistextbereich ohne die WP-HTML-Einfügungsschaltflächen.
quelle
Erstens: Vielen Dank an @Thomas McDonald für seine Antwort ; Ich musste genau die Frage herausfinden , die @Paul Sheldrake gestellt hatte , und der Code von Thomas brachte mich in die richtige Richtung.
Leider blieb ich dann hängen, weil ich das Layout von der Standardeinstellung auf ein einfacheres und kleineres Layout ändern musste, da ich den TinyMCE in einer Neben-Metabox verwenden musste. Ich habe praktisch überall nach einer Lösung gesucht und vor allem im MoxieCode TinyMCE Wiki und im TinyMCE Tips & How To Forum nichts gefunden! 1 Alles , was ich fand , erklärte , wie Satz
theme
,width
,height
usw. verwendet ,tinyMCE.init({...})
aber anscheinend kann man nicht verwenden, wenn Sie verwendentinyMCE.execCommand("mceAddControl")
.Ich war fast ratlos, als ich auf einer Seite des Artikels mehrere TinyMCE 3-Instanzen von Hamilton Chua sah , und er hat es geschafft! Seine Lösung war,
tinyMCE.settings
vor dem Anruf zuzuweisentinyMCE.execCommand("mceAddControl")
, zum Beispiel:Der traurige Teil ist, dass dies wirklich nicht schwer war, aber es wurde nirgendwo anders dokumentiert, wo ich es finden konnte. Es ist erstaunlich zu entdecken, dass fast niemand dieses Problem erlebt hat.
Der obige Code erzeugte also trotzdem den folgenden zweiten TinyMCE in genau dem Format / Layout, das mein Client benötigte:
(Quelle: mikeschinkel.com )
Wenn Sie also den @Thomas McDonald- Code oben verwenden und feststellen, dass Sie das Layout ändern müssen, lesen Sie unbedingt den großartigen Artikel von Hamilton Chua (danke Ham!) :
PS Wenn Sie etwas falsch machen, wird der TinyMCE möglicherweise überhaupt nicht angezeigt. Zum Beispiel in meinem Fall, den ich zuerst benutze
theme: "simple"
und ich habe nichts bekommen und es hat über eine Stunde gedauert, bis mir klar wurde, dass ich nur benutzen musstetheme: "advanced"
. Wenn Sie also feststellen, dass TinyMCE nicht für Sie funktioniert, versuchen Sie auf jeden Fall, die Dinge zu ändern. Möglicherweise haben Sie ein ähnliches Problem. (Übrigens habe ich noch keine anderen Themen ausprobiert oder untersucht, was noch verfügbar ist. Wenn Sie andere Themen finden, die funktionieren, lassen Sie bitte einen Kommentar unten.)Fußnote
1 : Sehr frustrierend! Nach etwas mehr als einem Monat mit WordPress Answer erwarte ich nun, Antworten auf alle meine Fragen in der gleichen Qualität wie hier zu finden, und anderswo stoße ich normalerweise auf Enttäuschung!
quelle
$script
und es gibt auch keinen Abschluss für deinen Heredoc, dh.EOT;
. Abgesehen von den kleinen Fehlern ist es ein gutes Arbeitsbeispiel.;)Da ich diesen Artikel als erstes Ergebnis in Google gefunden habe, wollte ich nur erwähnen, dass WP jetzt eine Funktion bietet, um diese Art von Aufgabe zu erledigen.
Fügen Sie innerhalb der
add_meta_box
Funktion den folgenden Code hinzu ->Überall dort, wo Sie den TinyMCE-Editor hinzufügen möchten
Referenz:
wp_editor
quelle
Der Standardeditor tinymce wird von einer Funktion namens wp_tiny_mce () in wp-admin / includes / post.php geladen. Schauen Sie in der Quelle in Zeile 1350 nach. Es gibt eine Reihe von Einstellungen in Zeile 1478. Eine der Optionen bestimmt anscheinend den Textbereich-Selektor, auf den der Javascript-Editor angewendet werden soll. Ich habe diesen Beitrag von Keighl auf seinem Blog gelesen , der mich darauf aufmerksam gemacht hat. Lesen Sie den Artikel und vielleicht gibt es eine Möglichkeit, wp_tiny_mce () in einem Administrator-Plug-in aufzurufen und auf einen zweiten von Ihnen erstellten Textbereich anzuwenden.
quelle
Ich habe es einfach durch Hinzufügen von "theEditor" als Klassenattribut zu einem Textbereich erhalten:
quelle