TinyMCE mit benutzerdefinierten Schaltflächen in einer Metabox

Erstens erlauben Sie mir bitte, mich zu entschuldigen – meine vierte Frage in der Woche, in der ich hier war! Sie waren alle sehr hilfsbereit, weshalb ich immer wieder zurück komme.

Ich versuche, einen benutzerdefinierten Beitragstyp zusammenzustellen, der den ‘Editor’ nicht verwendet. Es gibt viele Eingabefelder auf der Seite und die meisten benötigen einen eigenen TinyMCE-Editor.

Ich habe Metaboxen mit Textareas. Ich habe den folgenden Code ausprobiert:

 jQuery(document).ready(function() { jQuery("#etymology").addClass("mceEditor"); if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) { tinyMCE.execCommand("mceAddControl", false, "etymology"); } });  

mit…

  if (function_exists('wp_tiny_mce')) { add_filter('teeny_mce_before_init', create_function('$a', ' $a["theme"] = "advanced"; $a["skin"] = "wp_theme"; $a["height"] = "75"; $a["theme_advanced_buttons1"] = "bold, italic, pastetext, pasteword, bullist, numlist, link, unlink, outdent, indent, charmap, removeformat, spellchecker, fullscreen"; return $a;')); wp_tiny_mce(true); } 

Sie scheinen nicht zusammen zu arbeiten. Der TinyMCE-Editor erscheint auf dem rechten Element, aber es ist nur der Standard-WP-Editor, nicht die Einstellungen, die ich versucht habe zu implementieren.

Also, meine drei Fragen sind …

Frage 1 Wenn Sie Metaboxen für benutzerdefinierte Post-Typen verwenden, was ist die beste Möglichkeit, um einen benutzerdefinierten TinyMCE-Editor mehreren Elementen hinzuzufügen (am besten, ich meine wahrscheinlich am flexibelsten und am wenigsten “hacky”)?

Frage 2 A folgt auf Frage 1 … Wie gehe ich vor, um benutzerdefinierte Schaltflächen zu einem solchen Setup hinzuzufügen?

Frage 3 Ist es möglich, die minimale Höhe des TinyMCE-Editors zu ändern? Es scheint bei 100px forciert zu sein.

Meine Recherchen und Versuche, diese Arbeit zu machen, scheinen darauf hinzuweisen, dass WordPress ‘eingebaute TinyMCE-functionen die Aufgabe nicht erfüllen. Vielleicht ist es das Beste für mich, das komplett nach Maß zu machen, also die bestehenden tinyMCE-Skripte abzumelden und meine eigenen zu registrieren? Wenn ja, ist dies nur auf meinen benutzerdefinierten Post-Typ-Seiten möglich?

Vielen Dank im Voraus, Entschuldigung für den Aufsatz!


MAJOR EDIT – FRAGEN 1 & 2 BEHOBEN OK, mit freundlicher Genehmigung von Martins Post (und Mike’s Code!) Ich habe es geschafft, mehrere Textareas mit benutzerdefinierten Buttons einzurichten:

 function meta_genus_species() { global $post; $genus = get_post_custom_values( 'genus', $post->ID ); $species = get_post_custom_values( 'species', $post->ID ); $etymology = get_post_custom_values( 'etymology', $post->ID ); $family = get_post_custom_values( 'family', $post->ID ); $common_names = get_post_custom_values( 'common_names', $post->ID ); if (!isset($id)) { $id = "etymology"; } if (!isset($temp_min)) { $temp_min = plugins_url('images/temp_max.png' , __FILE__); } if (!isset($temp_max)) { $temp_max = plugins_url('images/temp_min.png' , __FILE__); } if (!isset($pH_min)) { $pH_min = plugins_url('images/pH_max.png' , __FILE__); } if (!isset($pH_max)) { $pH_max = plugins_url('images/pH_max.png' , __FILE__); } $tinyMCE = <<<EOT  jQuery(document).ready(function($) { $("#{$id}").addClass("mceEditor"); if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) { tinyMCE.settings = { theme : "advanced", mode : "none", language : "en", height:"75", width:"100%", theme_advanced_layout_manager : "SimpleLayout", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,temp_min,temp_max,pH_min,pH_max", theme_advanced_buttons2 : "", theme_advanced_buttons3 : "", setup : function(ed) { ed.addButton('temp_min', { title : 'Temperature: Minimum', image : '{$temp_min}', onclick : function() { ed.focus(); ed.selection.setContent('[temp_min]'); } }), ed.addShortcut("ctrl+1", "temp_min", "temp_min"), ed.addButton('temp_max', { title : 'Temperature: Maximum', image : '{$temp_max}', onclick : function() { ed.focus(); ed.selection.setContent('[temp_max]'); } }), ed.addButton('pH_min', { title : 'pH: Minimum', image : '{$pH_min}', onclick : function() { ed.focus(); ed.selection.setContent('[pH_min]'); } }), ed.addButton('pH_max', { title : 'pH: Maximum', image : '{$pH_max}', onclick : function() { ed.focus(); ed.selection.setContent('[pH_max]'); } }); } }; tinyMCE.execCommand("mceAddControl", true, "{$id}"); } });  EOT; echo $tinyMCE; ?> 

Description of taxonomy.

<input name="genus" class="text" value="" /> Testing...

<input name="species" class="text" value="" /> Testing...

Description

<input name="family" class="text" value="" /> Description

<input name="common_names" class="text" value="" /> Description

ID ); $year_described = get_post_custom_values( 'year_described', $post->ID ); ?>

<input name="species_author" class="text" value="" />

<input name="year_described" class="text" value="" />

<?php }

Ich bin absolut überglücklich! Ich habe so hart gearbeitet, um diese Informationen zu finden. Vielen Dank Martin 🙂

Nur Frage 3, jetzt zu antworten!

Solutions Collecting From Web of "TinyMCE mit benutzerdefinierten Schaltflächen in einer Metabox"