Ich brauchte viel mehr Code, um es zum Laufen zu bringen, und bekam auch einen Javascript-Fehler: Deprecated TinyMCE API call: <target>.onKeyUp.add(..)
Dies wurde durch ein WordPress-Upgrade von 3.x auf 4 verursacht. Also musste ich clear my browser cache
zuerst.
Zuerst habe ich dem wp-Filter tiny_mce_before_init
in meiner Datei functions.php einen Rückruf hinzugefügt. Dadurch konnte ich eine js-Rückruffunktion hinzufügen, die beim Initialisieren der Editoren ausgelöst wird:
add_filter( 'tiny_mce_before_init', array( $obj, 'filter_cb_mce_before_init' ) );
/**
* Filter cb to add event listeners to tinymce editor.
* @param array $init An array of setup js functions as strings.
* @return array Returns new array of js function strings.
*/
function filter_cb_mce_before_init( array $init ) {
$init['setup'] = "function(ed){
if(get_tinymce_content) //not required, I use it as flag to check if on correct page
ed.on('change', function(){ get_tinymce_content() });
}";
return $init;
}
Als nächstes die Javascript-Funktion, um mit dem Inhalt zu tun, was immer gewünscht wird, wenn er sich ändert. Fügen Sie dieses Javascript mit wp_enqueue_scripts zu der gewünschten Seite hinzu.
/**
* Get the content of the tinyMCE editor.
* @link http://wordpress.stackexchange.com/questions/42652/how-to-get-the-input-of-a-tinymce-editor-when-using-on-the-front-end
* @return {string} Returns the content
*/
function get_tinymce_content(){
//change to name of editor set in wp_editor()
var editorID = 'my_editor_id';
if (jQuery('#wp-'+editorID+'-wrap').hasClass("tmce-active"))
var content = tinyMCE.get(editorID).getContent({format : 'raw'});
else
var content = jQuery('#'+editorID).val();
console.log(content);
}
Der Code funktionierte, als ich den Editor wie folgt auf eine beliebige Seite druckte:
<?php wp_editor( @$event->description, 'my_editor_id', array(
'media_buttons' => false,
'textarea_name' => 'data[description]',
'quicktags' => array("buttons"=>"link,img,close"),
) ); ?>
val()